[v3] doc: prefer installing using meson rather than ninja
Checks
Commit Message
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
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
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
@@ -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
@@ -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
@@ -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`)
@@ -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
@@ -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
@@ -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::
@@ -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.