[Mesa-dev] [PATCH v2] travis: make Meson find the proper llvm-config

Emil Velikov emil.l.velikov at gmail.com
Thu Mar 1 17:27:44 UTC 2018


On 1 March 2018 at 17:16, Dylan Baker <dylan at pnwbakers.com> wrote:
> Quoting Emil Velikov (2018-02-28 16:01:56)
>> On 28 February 2018 at 21:18, Andres Gomez <agomez at igalia.com> wrote:
>> > Travis CI has moved to LLVM 5.0, and meson is detecting automatically
>> > the available version in /usr/local/bin based on the PATH env variable
>> > order preference.
>> >
>> > As for 0.44.x, Meson cannot receive the path to the llvm-config binary
>> > as a configuration parameter. See
>> > https://github.com/mesonbuild/meson/issues/2887 and
>> > https://github.com/dcbaker/meson/commit/7c8b6ee3fa42f43c9ac7dcacc61a77eca3f1bcef
>> >
>> > We want to use the custom (APT) installed version. Therefore, let's
>> > make Meson find our wanted version sooner than the one at
>> > /usr/local/bin
>> >
>> > Once this is corrected, we would still need a patch similar to:
>> > https://lists.freedesktop.org/archives/mesa-dev/2017-December/180217.html
>> >
>> > v2: Create the link only to the specificly wanted LLVM version (Gert).
>> >
>> > Cc: Eric Engestrom <eric.engestrom at imgtec.com>
>> > Cc: Dylan Baker <dylan at pnwbakers.com>
>> > Cc: Emil Velikov <emil.velikov at collabora.com>
>> > Cc: Juan A. Suarez Romero <jasuarez at igalia.com>
>> > Cc: Gert Wollny <gw.fossdev at gmail.com>
>> > Cc: Jon Turney <jon.turney at dronecode.org.uk>
>> > Signed-off-by: Andres Gomez <agomez at igalia.com>
>> > Reviewed-and-Tested-by: Eric Engestrom <eric.engestrom at imgtec.com>
>> > Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
>> > Reviewed-by: Juan A. Suarez <jasuarez at igalia.com>
>> > ---
>> >  .travis.yml | 30 ++++++++++++++++++++++++++----
>> >  1 file changed, 26 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/.travis.yml b/.travis.yml
>> > index 0ec08e5bff7..823111ca539 100644
>> > --- a/.travis.yml
>> > +++ b/.travis.yml
>> > @@ -34,6 +34,8 @@ matrix:
>> >          - LABEL="meson Vulkan"
>> >          - BUILD=meson
>> >          - MESON_OPTIONS="-Ddri-drivers= -Dgallium-drivers="
>> > +        - LLVM_VERSION=4.0
>> > +        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
>> >        addons:
>> >          apt:
>> >            sources:
>> > @@ -573,8 +575,28 @@ script:
>> >        scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
>> >      fi
>> >
>> > -  - if test "x$BUILD" = xmeson; then
>> > -      export CFLAGS="$CFLAGS -isystem`pwd`";
>> > -      meson _build $MESON_OPTIONS;
>> > -      ninja -C _build;
>> > +  - |
>> > +    if test "x$BUILD" = xmeson; then
>> > +
>> > +      # Travis CI has moved to LLVM 5.0, and meson is detecting
>> > +      # automatically the available version in /usr/local/bin based on
>> > +      # the PATH env variable order preference.
>> > +      #
>> > +      # As for 0.44.x, Meson cannot receive the path to the
>> > +      # llvm-config binary as a configuration parameter. See
>> > +      # https://github.com/mesonbuild/meson/issues/2887 and
>> > +      # https://github.com/dcbaker/meson/commit/7c8b6ee3fa42f43c9ac7dcacc61a77eca3f1bcef
>> > +      #
>> > +      # We want to use the custom (APT) installed version. Therefore,
>> > +      # let's make Meson find our wanted version sooner than the one
>> > +      # at /usr/local/bin
>> > +      #
>> > +      # Once this is corrected, we would still need a patch similar
>> > +      # to:
>> > +      # https://lists.freedesktop.org/archives/mesa-dev/2017-December/180217.html
>> > +      test -f /usr/bin/$LLVM_CONFIG && ln -s /usr/bin/$LLVM_CONFIG $HOME/prefix/bin/llvm-config
>> > +
>> Patch looks good,
>> Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
>>
>> Aside:
>> I'm not quite sure we need Eric's llvm-version toggle.
>>
>> Haven't looked exactly what meson does now, but it seems like it
>> probes for specifics binaries/locations.
>> So having something like /opt/bin/llvm-config-host-4.0 won't cut it -
>> a sort of pattern fairly common when using OE/Yocto.
>>
>> Let's keep that for another time,
>> Emil
>
> Since I wrote that logic in meson,
>
> It tries (in order), llvm-config, llvm-config-7svn, ... Until it
> finds one that satisfies the version requirements passed. Which means if there
> is no `llvm-config` it will pick llvm-config-5.0 before llvm-config-4.0. I've
> proposed adding a meson level option to force a specific llvm-config to be used
> but it's been ignored thus far.
>
I would skim through OE/Yocto/others and point it out to the meson people.
Here's one example from LibreELEC [1] which seems fairly common.

-Emil

[1] https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/lang/llvm/package.mk


More information about the mesa-dev mailing list