Quoting Emil Velikov (2018-01-24 11:00:04)
> On 24 January 2018 at 18:19, Dylan Baker <dy...@pnwbakers.com> wrote:
> > Quoting Emil Velikov (2018-01-24 03:53:35)
> >> On 24 January 2018 at 10:39, Marc Dietrich <marvi...@gmx.de> wrote:
> >> > Hi Dylan,
> >> >
> >> > Am Dienstag, 23. Januar 2018, 19:28:08 CET schrieb Dylan Baker:
> >> >> Fixes: d1992255bb29 ("meson: Add build Intel "anv" vulkan driver")
> >> >> Reported-by: Marc Dietrich <marvi...@gmx.de>
> >> >> Signed-off-by: Dylan Baker <dylan.c.ba...@intel.com>
> >> >> ---
> >> >>  src/util/meson.build | 8 ++++++--
> >> >>  1 file changed, 6 insertions(+), 2 deletions(-)
> >> >>
> >> >> diff --git a/src/util/meson.build b/src/util/meson.build
> >> >> index fa591c92e56..b23dba3a985 100644
> >> >> --- a/src/util/meson.build
> >> >> +++ b/src/util/meson.build
> >> >> @@ -112,8 +112,12 @@ libxmlconfig = static_library(
> >> >>    files_xmlconfig,
> >> >>    include_directories : inc_common,
> >> >>    dependencies : [dep_expat, dep_m],
> >> >> -  c_args : [c_msvc_compat_args, c_vis_args,
> >> >> -            '-DSYSCONFDIR="@0@"'.format(get_option('sysconfdir'))],
> >> >> +  c_args : [
> >> >> +    c_msvc_compat_args, c_vis_args,
> >> >> +    '-DSYSCONFDIR="@0@"'.format(
> >> >> +      join_paths(get_option('prefix'), get_option('sysconfdir'))
> >> >> +    ),
> >> >> +  ],
> >> >>    build_by_default : false,
> >> >>  )
> >> >
> >> > this won't work as the prefix is often set to /usr, which results in
> >> > sysconfdir to be /usr/etc. As this is a special case, and "/etc" is the
> >> > default meson sysconfdir, we could just test for "prefix=/usr" and set
> >> > sysconfdir to prefix/sysconfdir if it is not.
> >> >
> >> > This works for me, but dosn't look meson-stylish:
> >> >
> >> > diff --git a/src/util/meson.build b/src/util/meson.build
> >> > index fa591c92e5..6294e188f2 100644
> >> > --- a/src/util/meson.build
> >> > +++ b/src/util/meson.build
> >> > @@ -83,8 +83,6 @@ files_mesa_util = files(
> >> >    'u_vector.h',
> >> >  )
> >> >
> >> > -install_data('drirc', install_dir : get_option('sysconfdir'))
> >> > -
> >> >  files_xmlconfig = files(
> >> >    'xmlconfig.c',
> >> >    'xmlconfig.h',
> >> > @@ -107,13 +105,23 @@ libmesa_util = static_library(
> >> >    build_by_default : false
> >> >  )
> >> >
> >> > +if get_option('prefix') != '/usr'
> >> > +   sysconfarg = join_paths(get_option('prefix'), 
> >> > get_option('sysconfdir'))
> >> > +else
> >> > +   sysconfarg = '/' + get_option('sysconfdir')
> >> > +endif
> >> > +
> >> Tweaking sysconfdir based on the value of prefix doesn't sound
> >> right.It's the build system to know and manage those.
> >> By default everything should be installed only in prefix - that's what
> >> cmake, autotools and others do. I think meson should say consistent do
> >> the same.
> >>
> >> The reason being is that you don't want to overwrite existing [system]
> >> files, unless explicitly asked for. In this case by setting
> >> sysconfigdir to /etc.
> >>
> >> Obviously sysconfdir/sysconfigdir is one example here, but the rule
> >> applies throughout.
> >> Emil
> >
> > Emil,
> >
> > Ken and I talked about this, I think the right thing to do is something 
> > like:
> > sysdir = get_option('sysconfdir')
> > if not sysdir.startswith('/')
> >     sysdir = join_paths(get_option('prefix'), sysdir)
> > endif
> >
> > So that if someone sets --sysconfdir=/etc and --prefix=/usr they get what 
> > they
> > want (libs in /usr/lib and drirc in /etc), but if say a BSD sets 
> > --syconfdir=etc
> > --prefux=/usr/local they get what they (libs in /usr/local/libs and drirc in
> > /usr/local/etc)
> >
> > Does that seem right to you?
> >
> if it were for my personal use, I'll just hack things around ;-)
> 
> It would be nice is meson complies with the existing standard.
> You can tweak the CI to prevent breakage, but for many others - their
> system files will be overwritten.
> 
> Feel free to proceed as you wish, I'm just sharing something that
> looks quite buggy.
> -Emil

Jon pointed out that join_paths('/usr', '/etc') will return '/etc' (since
'/etc') is absolute. Which means
join_paths(get_option('prefix'), get_option('sysconfidir')), will do the right
thing in both cases.

Just to be clear, the default for meson is --prefix=/usr/local --sysconfdir=etc,
so no one's files are going to be overwritten by default.

Dylan

Attachment: signature.asc
Description: signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to