Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-08 Thread Emil Velikov
On 8 May 2015 at 03:10, Michel Dänzer mic...@daenzer.net wrote:
 On 08.05.2015 03:24, Tom Stellard wrote:
 For this particular situation, I'm happy with any solution that:

 1. Allows a user to install the icd file to /etc if he or she wants to.

 --sysconfdir=/etc

 That covers drirc as well.


 2. Does not require the user to read the spec to know that /etc is the
 correct place to install it.

 I think the above is pretty standard for autotools projects. I think it
 would be better to document this in the appropriate place(s) for OpenCL
 users than to add another convoluted option which doesn't really add any
 flexibility.

Very well said Michel. I'm suspecting that the latest approach will
lead to quite a bit of confusion. Even amongst experienced package
maintainers. If in doubt one can ping the debian, arch and/or fedora
guys (i.e the ones shipping opencl) for their 2c :-)

-Emil
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-07 Thread Michel Dänzer
On 05.05.2015 01:47, Tom Stellard wrote:
 On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
 On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
 On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
 On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
 The standard ICD file path is /etc/OpenCL/vendor/.
 However it doesn't fit well with custom build.
 This option allow ICD vendor file installation path override
 ---
  configure.ac   | 6 ++
  src/gallium/targets/opencl/Makefile.am | 2 +-
  2 files changed, 7 insertions(+), 1 deletion(-)

 diff --git a/configure.ac b/configure.ac
 index 095e23e..bf08d76 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
  [D3D_DRIVER_INSTALL_DIR=$withval],
  [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
  AC_SUBST([D3D_DRIVER_INSTALL_DIR])
 +AC_ARG_WITH([icd-file-dir],
 +[AS_HELP_STRING([--with-icd-file-dir=DIR],
 +[directory for the OpenCL ICD vendor file 
 @:@/etc/OpenCL/vendors@:@])],
 +[ICD_FILE_INSTALL_DIR=$withval],
 +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])

 What about making this default to ${sysconfdir}/OpenCL/vendors ? That
 way using --prefix should auto-make it go into the prefix instead of
 unexpectedly installing things outside of the specified prefix? That
 way a distro build which specifies --sysconfdir as /etc will get it in
 the right place, while by default it'll go into /usr/local/etc and a
 user can override the icd loader's default behaviour with
 OPENCL_VENDOR_PATH?


 I would prefer not to make this the default behavior, because it violates 
 the spec
 and there could potentially be multiple icd implementations, which may or 
 may not have
 the overrides.

 I think the best solution would be to rename the option to something like
 --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
 and have the option enable the behavior that Ilia is describing.

 This will give distros and advanced users a way to setup their system
 the way they want.

 It's just a very anti-autoconf thing to do to have make install fail
 by default unless you specify some hey, i actually want make install
 to work option.

 I think it's crazy to expect that, by default, people will want to
 write over their system installs, and having things go outside of the
 specified --prefix is very surprising (unless you force some other
 option). And asking the user to run make install as root is even
 crazier.

 
 My expectation is that, by default, when people specify --enable-opencl-icd
 they want an implementation that conforms to the specification.
 Unfortunately, this means installing icd files to /etc.
 
 There is no good solution here, but I'd rather have users specify a flag
 to get a sane build system, than requiring them to set a flag and set
 an environment variable just to get working OpenCL with the ICD loader.
 
 I guess I haven't hit this yet because there's no OpenCL support in
 nouveau or freedreno, but I made the same stink about vdpau when Emil
 tried to make it install to some system location by default. At least
 a few people seemed to agree with me back then...

 
 Does the vdpau spec also require installation to a specific system director
 (e.g. /etc/) ?

Tom, I think ensuring that the OpenCL ICD loader can pick up the
mesa.icd file is something for the distributor / administrator / user to
worry about, not Mesa upstream.

There's a similar situation with the drirc file, which is installed
inside the prefix by default but only read from /etc/.


-- 
Earthling Michel Dänzer   |   http://www.amd.com
Libre software enthusiast | Mesa and X developer
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-07 Thread Tom Stellard
On Thu, May 07, 2015 at 04:59:41PM +0900, Michel Dänzer wrote:
 On 05.05.2015 01:47, Tom Stellard wrote:
  On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
  On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
  On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
  On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
  The standard ICD file path is /etc/OpenCL/vendor/.
  However it doesn't fit well with custom build.
  This option allow ICD vendor file installation path override
  ---
   configure.ac   | 6 ++
   src/gallium/targets/opencl/Makefile.am | 2 +-
   2 files changed, 7 insertions(+), 1 deletion(-)
 
  diff --git a/configure.ac b/configure.ac
  index 095e23e..bf08d76 100644
  --- a/configure.ac
  +++ b/configure.ac
  @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
   [D3D_DRIVER_INSTALL_DIR=$withval],
   [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
   AC_SUBST([D3D_DRIVER_INSTALL_DIR])
  +AC_ARG_WITH([icd-file-dir],
  +[AS_HELP_STRING([--with-icd-file-dir=DIR],
  +[directory for the OpenCL ICD vendor file 
  @:@/etc/OpenCL/vendors@:@])],
  +[ICD_FILE_INSTALL_DIR=$withval],
  +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
 
  What about making this default to ${sysconfdir}/OpenCL/vendors ? That
  way using --prefix should auto-make it go into the prefix instead of
  unexpectedly installing things outside of the specified prefix? That
  way a distro build which specifies --sysconfdir as /etc will get it in
  the right place, while by default it'll go into /usr/local/etc and a
  user can override the icd loader's default behaviour with
  OPENCL_VENDOR_PATH?
 
 
  I would prefer not to make this the default behavior, because it violates 
  the spec
  and there could potentially be multiple icd implementations, which may or 
  may not have
  the overrides.
 
  I think the best solution would be to rename the option to something like
  --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
  and have the option enable the behavior that Ilia is describing.
 
  This will give distros and advanced users a way to setup their system
  the way they want.
 
  It's just a very anti-autoconf thing to do to have make install fail
  by default unless you specify some hey, i actually want make install
  to work option.
 
  I think it's crazy to expect that, by default, people will want to
  write over their system installs, and having things go outside of the
  specified --prefix is very surprising (unless you force some other
  option). And asking the user to run make install as root is even
  crazier.
 
  
  My expectation is that, by default, when people specify --enable-opencl-icd
  they want an implementation that conforms to the specification.
  Unfortunately, this means installing icd files to /etc.
  
  There is no good solution here, but I'd rather have users specify a flag
  to get a sane build system, than requiring them to set a flag and set
  an environment variable just to get working OpenCL with the ICD loader.
  
  I guess I haven't hit this yet because there's no OpenCL support in
  nouveau or freedreno, but I made the same stink about vdpau when Emil
  tried to make it install to some system location by default. At least
  a few people seemed to agree with me back then...
 
  
  Does the vdpau spec also require installation to a specific system director
  (e.g. /etc/) ?
 
 Tom, I think ensuring that the OpenCL ICD loader can pick up the
 mesa.icd file is something for the distributor / administrator / user to
 worry about, not Mesa upstream.
 

I don't really disagree with this in general.  My position is that when
there is a situation where it is impossible to follow both the API spec
and build system best practices that it is more important to follow the
API spec.

I realize some people disagree with this, and I completely understand
their rationale.

For this particular situation, I'm happy with any solution that:

1. Allows a user to install the icd file to /etc if he or she wants to.
and
2. Does not require the user to read the spec to know that /etc is the
correct place to install it.

I think EdB's latest patch is a good solution:
http://lists.freedesktop.org/archives/mesa-dev/2015-May/083661.html

-Tom

 There's a similar situation with the drirc file, which is installed
 inside the prefix by default but only read from /etc/.
 
 
 -- 
 Earthling Michel Dänzer   |   http://www.amd.com
 Libre software enthusiast | Mesa and X developer
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-07 Thread Michel Dänzer
On 08.05.2015 03:24, Tom Stellard wrote:
 For this particular situation, I'm happy with any solution that:
 
 1. Allows a user to install the icd file to /etc if he or she wants to.

--sysconfdir=/etc

That covers drirc as well.


 2. Does not require the user to read the spec to know that /etc is the
 correct place to install it.

I think the above is pretty standard for autotools projects. I think it
would be better to document this in the appropriate place(s) for OpenCL
users than to add another convoluted option which doesn't really add any
flexibility.


-- 
Earthling Michel Dänzer   |   http://www.amd.com
Libre software enthusiast | Mesa and X developer

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-07 Thread Ilia Mirkin
On Thu, May 7, 2015 at 3:59 AM, Michel Dänzer mic...@daenzer.net wrote:
 On 05.05.2015 01:47, Tom Stellard wrote:
 On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
 On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
 On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
 On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
 The standard ICD file path is /etc/OpenCL/vendor/.
 However it doesn't fit well with custom build.
 This option allow ICD vendor file installation path override
 ---
  configure.ac   | 6 ++
  src/gallium/targets/opencl/Makefile.am | 2 +-
  2 files changed, 7 insertions(+), 1 deletion(-)

 diff --git a/configure.ac b/configure.ac
 index 095e23e..bf08d76 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
  [D3D_DRIVER_INSTALL_DIR=$withval],
  [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
  AC_SUBST([D3D_DRIVER_INSTALL_DIR])
 +AC_ARG_WITH([icd-file-dir],
 +[AS_HELP_STRING([--with-icd-file-dir=DIR],
 +[directory for the OpenCL ICD vendor file 
 @:@/etc/OpenCL/vendors@:@])],
 +[ICD_FILE_INSTALL_DIR=$withval],
 +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])

 What about making this default to ${sysconfdir}/OpenCL/vendors ? That
 way using --prefix should auto-make it go into the prefix instead of
 unexpectedly installing things outside of the specified prefix? That
 way a distro build which specifies --sysconfdir as /etc will get it in
 the right place, while by default it'll go into /usr/local/etc and a
 user can override the icd loader's default behaviour with
 OPENCL_VENDOR_PATH?


 I would prefer not to make this the default behavior, because it violates 
 the spec
 and there could potentially be multiple icd implementations, which may or 
 may not have
 the overrides.

 I think the best solution would be to rename the option to something like
 --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
 and have the option enable the behavior that Ilia is describing.

 This will give distros and advanced users a way to setup their system
 the way they want.

 It's just a very anti-autoconf thing to do to have make install fail
 by default unless you specify some hey, i actually want make install
 to work option.

 I think it's crazy to expect that, by default, people will want to
 write over their system installs, and having things go outside of the
 specified --prefix is very surprising (unless you force some other
 option). And asking the user to run make install as root is even
 crazier.


 My expectation is that, by default, when people specify --enable-opencl-icd
 they want an implementation that conforms to the specification.
 Unfortunately, this means installing icd files to /etc.

 There is no good solution here, but I'd rather have users specify a flag
 to get a sane build system, than requiring them to set a flag and set
 an environment variable just to get working OpenCL with the ICD loader.

 I guess I haven't hit this yet because there's no OpenCL support in
 nouveau or freedreno, but I made the same stink about vdpau when Emil
 tried to make it install to some system location by default. At least
 a few people seemed to agree with me back then...


 Does the vdpau spec also require installation to a specific system director
 (e.g. /etc/) ?

 Tom, I think ensuring that the OpenCL ICD loader can pick up the
 mesa.icd file is something for the distributor / administrator / user to
 worry about, not Mesa upstream.

 There's a similar situation with the drirc file, which is installed
 inside the prefix by default but only read from /etc/.

FTR, I fully agree with this assessment (it's the distributor's
problem), but my main priority was making sure make install works.

Cheers,

  -ilia
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-05 Thread Emil Velikov
On 4 May 2015 at 18:11, Ilia Mirkin imir...@alum.mit.edu wrote:
 On Mon, May 4, 2015 at 12:47 PM, Tom Stellard t...@stellard.net wrote:
 On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
 On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
  On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
  On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
   The standard ICD file path is /etc/OpenCL/vendor/.
   However it doesn't fit well with custom build.
   This option allow ICD vendor file installation path override
   ---
configure.ac   | 6 ++
src/gallium/targets/opencl/Makefile.am | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
  
   diff --git a/configure.ac b/configure.ac
   index 095e23e..bf08d76 100644
   --- a/configure.ac
   +++ b/configure.ac
   @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
[D3D_DRIVER_INSTALL_DIR=$withval],
[D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
AC_SUBST([D3D_DRIVER_INSTALL_DIR])
   +AC_ARG_WITH([icd-file-dir],
   +[AS_HELP_STRING([--with-icd-file-dir=DIR],
   +[directory for the OpenCL ICD vendor file 
   @:@/etc/OpenCL/vendors@:@])],
   +[ICD_FILE_INSTALL_DIR=$withval],
   +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
 
  What about making this default to ${sysconfdir}/OpenCL/vendors ? That
  way using --prefix should auto-make it go into the prefix instead of
  unexpectedly installing things outside of the specified prefix? That
  way a distro build which specifies --sysconfdir as /etc will get it in
  the right place, while by default it'll go into /usr/local/etc and a
  user can override the icd loader's default behaviour with
  OPENCL_VENDOR_PATH?
 
 
  I would prefer not to make this the default behavior, because it violates 
  the spec
  and there could potentially be multiple icd implementations, which may or 
  may not have
  the overrides.
 
  I think the best solution would be to rename the option to something like
  --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
  and have the option enable the behavior that Ilia is describing.
 
  This will give distros and advanced users a way to setup their system
  the way they want.

 It's just a very anti-autoconf thing to do to have make install fail
 by default unless you specify some hey, i actually want make install
 to work option.

 I think it's crazy to expect that, by default, people will want to
 write over their system installs, and having things go outside of the
 specified --prefix is very surprising (unless you force some other
 option). And asking the user to run make install as root is even
 crazier.


 My expectation is that, by default, when people specify --enable-opencl-icd
 they want an implementation that conforms to the specification.
 Unfortunately, this means installing icd files to /etc.

 Oh, does this only happen when I supply some option? I.e. if I just do
 ./configure --prefix=... it'll still work, I have to do
 --enable-opencl-icd and only *then* does it install the other thing?
 That might be more acceptable, although still not really.

Fwiw I second Ilia's suggestion. Why ?
 - Overwriting system files (by default), when you want to install to
a custom location is not a good idea.
 - Package maintainers have sufficient knowledge which file should be
placed where on the specific distribution. For example distro A may
have a policy that the file must be in /usr/foo, with a symlink to it
in /etc.
 - This is not an OpenCL only problem. DRI, VAAPI, VDPAU, XvMC and
OMX exhibit similar behaviour. Ilia's suggestion brings OpenCL
alongside the rest.


 There is no good solution here, but I'd rather have users specify a flag
 to get a sane build system, than requiring them to set a flag and set
 an environment variable just to get working OpenCL with the ICD loader.

If one does not use the distribution provided package then they either
install to a custom prefix or system wide. Either of which has its
caveats.
In the case of a custom prefix they can use an env var. Alternatively
the file will be installed in the correct place. If one changes
sysconfdir, then they should be fully aware that things are bound to
explode at any moment.

 I know exceedingly little about OpenCL. I'm just coming at this from a
 generic build shouldn't try to install things outside the prefix
 perspective. Make install shouldn't fail, and users shouldn't be
 tempted into accidentally overwriting their system installs even
 though they set a prefix but then foolishly ran 'sudo make install'.

 Autoconf is a pretty common build helper, nearly every sane package
 with a unix build target uses it, and I think people are used to how
 it works. One of the cool things is that you can do ./configure
 --prefix=/home/user/install; make install and expect it to work (as
 in, things landing in /home/user/install/..., not in /). Or perhaps
 you use a system like 'stow' which takes 

Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-05 Thread Tom Stellard
On Tue, May 05, 2015 at 03:48:29PM +0100, Emil Velikov wrote:
 On 4 May 2015 at 18:11, Ilia Mirkin imir...@alum.mit.edu wrote:
  On Mon, May 4, 2015 at 12:47 PM, Tom Stellard t...@stellard.net wrote:
  On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
  On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
   On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
   On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
The standard ICD file path is /etc/OpenCL/vendor/.
However it doesn't fit well with custom build.
This option allow ICD vendor file installation path override
---
 configure.ac   | 6 ++
 src/gallium/targets/opencl/Makefile.am | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
   
diff --git a/configure.ac b/configure.ac
index 095e23e..bf08d76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
 [D3D_DRIVER_INSTALL_DIR=$withval],
 [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
+AC_ARG_WITH([icd-file-dir],
+[AS_HELP_STRING([--with-icd-file-dir=DIR],
+[directory for the OpenCL ICD vendor file 
@:@/etc/OpenCL/vendors@:@])],
+[ICD_FILE_INSTALL_DIR=$withval],
+[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
  
   What about making this default to ${sysconfdir}/OpenCL/vendors ? That
   way using --prefix should auto-make it go into the prefix instead of
   unexpectedly installing things outside of the specified prefix? That
   way a distro build which specifies --sysconfdir as /etc will get it in
   the right place, while by default it'll go into /usr/local/etc and a
   user can override the icd loader's default behaviour with
   OPENCL_VENDOR_PATH?
  
  
   I would prefer not to make this the default behavior, because it 
   violates the spec
   and there could potentially be multiple icd implementations, which may 
   or may not have
   the overrides.
  
   I think the best solution would be to rename the option to something 
   like
   --enable-ocl-icd-respect-prefix (suggestions for other names 
   encouraged).
   and have the option enable the behavior that Ilia is describing.
  
   This will give distros and advanced users a way to setup their system
   the way they want.
 
  It's just a very anti-autoconf thing to do to have make install fail
  by default unless you specify some hey, i actually want make install
  to work option.
 
  I think it's crazy to expect that, by default, people will want to
  write over their system installs, and having things go outside of the
  specified --prefix is very surprising (unless you force some other
  option). And asking the user to run make install as root is even
  crazier.
 
 
  My expectation is that, by default, when people specify --enable-opencl-icd
  they want an implementation that conforms to the specification.
  Unfortunately, this means installing icd files to /etc.
 
  Oh, does this only happen when I supply some option? I.e. if I just do
  ./configure --prefix=... it'll still work, I have to do
  --enable-opencl-icd and only *then* does it install the other thing?
  That might be more acceptable, although still not really.
 
 Fwiw I second Ilia's suggestion. Why ?
  - Overwriting system files (by default), when you want to install to
 a custom location is not a good idea.
  - Package maintainers have sufficient knowledge which file should be
 placed where on the specific distribution. For example distro A may
 have a policy that the file must be in /usr/foo, with a symlink to it
 in /etc.
  - This is not an OpenCL only problem. DRI, VAAPI, VDPAU, XvMC and
 OMX exhibit similar behaviour. Ilia's suggestion brings OpenCL
 alongside the rest.
 

Can you explain why the DRI, VAAPI, VDPAU, XvMC, and OMX situation is
the same as OpenCL.  My understanding the install locations  for these
are configurable.  Whereas the OpenCL spec forces you to install to /etc.

 
  There is no good solution here, but I'd rather have users specify a flag
  to get a sane build system, than requiring them to set a flag and set
  an environment variable just to get working OpenCL with the ICD loader.
 
 If one does not use the distribution provided package then they either
 install to a custom prefix or system wide. Either of which has its
 caveats.
 In the case of a custom prefix they can use an env var. Alternatively
 the file will be installed in the correct place. If one changes
 sysconfdir, then they should be fully aware that things are bound to
 explode at any moment.
 
  I know exceedingly little about OpenCL. I'm just coming at this from a
  generic build shouldn't try to install things outside the prefix
  perspective. Make install shouldn't fail, and users shouldn't be
  tempted into accidentally overwriting their system installs even
  though they set a prefix but then foolishly ran 'sudo make install'.
 

Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-05 Thread Ilia Mirkin
On Tue, May 5, 2015 at 11:42 AM, Tom Stellard t...@stellard.net wrote:
  How about this -- get rid of --enable-opencl-icd and change it to
  --with-opencl-icd-dir where you must supply a directory if you want to
  use it. That way if you want the system one, you'd say
  /etc/OpenCL/vendors, if you want your own custom dir, then put that
  in.
 
 This sounds like a very clever solution, but it is not intuitive if
 you lack prior knowledge about its workings. I can add For
 distribution maintainers note as 10.6 comes out, though not too sure
 how many people actually read these :-\
 I'm fine with it either way, so I'll be up-to Tom and others to make the 
 call.


 I am in favor of some variant of this solution.  I personally prefer
 having two options one to use /etc and one to use $sysconfdif, which I
 think is more intuitive.

So actually, --with-foo-dir is usually for build, not install (i.e.
what directory is foo located in). Not sure what the standard is for
install to random other directory is with autoconf, but how about

--install-opencl-icd-system
--install-opencl-icd-dir

With the appropriate information in the configure help, and error out
if both are specified. Does that make everyone happy?

It should be noted that the contents of the icd file aren't
particularly groundbreaking -- just a text file with
libMesaOpenCL.so in it -- so even if you have one from your system
install, and stick mesa elsewhere and its icd file goes to that other
wrong location, you will still have a mesa icd file there, and
things will work (provided you supply a LD_LIBRARY_PATH).

  -ilia
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-05 Thread Emil Velikov
On 5 May 2015 at 16:42, Tom Stellard t...@stellard.net wrote:
 On Tue, May 05, 2015 at 03:48:29PM +0100, Emil Velikov wrote:
 On 4 May 2015 at 18:11, Ilia Mirkin imir...@alum.mit.edu wrote:
  On Mon, May 4, 2015 at 12:47 PM, Tom Stellard t...@stellard.net wrote:
  On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
  On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
   On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
   On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
The standard ICD file path is /etc/OpenCL/vendor/.
However it doesn't fit well with custom build.
This option allow ICD vendor file installation path override
---
 configure.ac   | 6 ++
 src/gallium/targets/opencl/Makefile.am | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
   
diff --git a/configure.ac b/configure.ac
index 095e23e..bf08d76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
 [D3D_DRIVER_INSTALL_DIR=$withval],
 [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
+AC_ARG_WITH([icd-file-dir],
+[AS_HELP_STRING([--with-icd-file-dir=DIR],
+[directory for the OpenCL ICD vendor file 
@:@/etc/OpenCL/vendors@:@])],
+[ICD_FILE_INSTALL_DIR=$withval],
+[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
  
   What about making this default to ${sysconfdir}/OpenCL/vendors ? That
   way using --prefix should auto-make it go into the prefix instead of
   unexpectedly installing things outside of the specified prefix? That
   way a distro build which specifies --sysconfdir as /etc will get it in
   the right place, while by default it'll go into /usr/local/etc and a
   user can override the icd loader's default behaviour with
   OPENCL_VENDOR_PATH?
  
  
   I would prefer not to make this the default behavior, because it 
   violates the spec
   and there could potentially be multiple icd implementations, which may 
   or may not have
   the overrides.
  
   I think the best solution would be to rename the option to something 
   like
   --enable-ocl-icd-respect-prefix (suggestions for other names 
   encouraged).
   and have the option enable the behavior that Ilia is describing.
  
   This will give distros and advanced users a way to setup their system
   the way they want.
 
  It's just a very anti-autoconf thing to do to have make install fail
  by default unless you specify some hey, i actually want make install
  to work option.
 
  I think it's crazy to expect that, by default, people will want to
  write over their system installs, and having things go outside of the
  specified --prefix is very surprising (unless you force some other
  option). And asking the user to run make install as root is even
  crazier.
 
 
  My expectation is that, by default, when people specify 
  --enable-opencl-icd
  they want an implementation that conforms to the specification.
  Unfortunately, this means installing icd files to /etc.
 
  Oh, does this only happen when I supply some option? I.e. if I just do
  ./configure --prefix=... it'll still work, I have to do
  --enable-opencl-icd and only *then* does it install the other thing?
  That might be more acceptable, although still not really.
 
 Fwiw I second Ilia's suggestion. Why ?
  - Overwriting system files (by default), when you want to install to
 a custom location is not a good idea.
  - Package maintainers have sufficient knowledge which file should be
 placed where on the specific distribution. For example distro A may
 have a policy that the file must be in /usr/foo, with a symlink to it
 in /etc.
  - This is not an OpenCL only problem. DRI, VAAPI, VDPAU, XvMC and
 OMX exhibit similar behaviour. Ilia's suggestion brings OpenCL
 alongside the rest.


 Can you explain why the DRI, VAAPI, VDPAU, XvMC, and OMX situation is
 the same as OpenCL.  My understanding the install locations  for these
 are configurable.  Whereas the OpenCL spec forces you to install to /etc.

All of these have hardcoded path into the loader library. Mostly the
path is fixed, but in some cases one can change it at build time (via
a configure option). The loaders also provide (officially or not) a
way of overriding the said path.

I guess the difference here is that not all OpenCL loaders honour
OPENCL_VENDOR_PATH :-\


  How about this -- get rid of --enable-opencl-icd and change it to
  --with-opencl-icd-dir where you must supply a directory if you want to
  use it. That way if you want the system one, you'd say
  /etc/OpenCL/vendors, if you want your own custom dir, then put that
  in.
 
 This sounds like a very clever solution, but it is not intuitive if
 you lack prior knowledge about its workings. I can add For
 distribution maintainers note as 10.6 comes out, though not too sure
 how many people actually read these :-\
 I'm fine with it either way, so I'll 

Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-04 Thread Tom Stellard
On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
 On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
  The standard ICD file path is /etc/OpenCL/vendor/.
  However it doesn't fit well with custom build.
  This option allow ICD vendor file installation path override
  ---
   configure.ac   | 6 ++
   src/gallium/targets/opencl/Makefile.am | 2 +-
   2 files changed, 7 insertions(+), 1 deletion(-)
 
  diff --git a/configure.ac b/configure.ac
  index 095e23e..bf08d76 100644
  --- a/configure.ac
  +++ b/configure.ac
  @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
   [D3D_DRIVER_INSTALL_DIR=$withval],
   [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
   AC_SUBST([D3D_DRIVER_INSTALL_DIR])
  +AC_ARG_WITH([icd-file-dir],
  +[AS_HELP_STRING([--with-icd-file-dir=DIR],
  +[directory for the OpenCL ICD vendor file 
  @:@/etc/OpenCL/vendors@:@])],
  +[ICD_FILE_INSTALL_DIR=$withval],
  +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
 
 What about making this default to ${sysconfdir}/OpenCL/vendors ? That
 way using --prefix should auto-make it go into the prefix instead of
 unexpectedly installing things outside of the specified prefix? That
 way a distro build which specifies --sysconfdir as /etc will get it in
 the right place, while by default it'll go into /usr/local/etc and a
 user can override the icd loader's default behaviour with
 OPENCL_VENDOR_PATH?
 

I would prefer not to make this the default behavior, because it violates the 
spec
and there could potentially be multiple icd implementations, which may or may 
not have
the overrides.

I think the best solution would be to rename the option to something like
--enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
and have the option enable the behavior that Ilia is describing.

This will give distros and advanced users a way to setup their system
the way they want.  

-Tom

  +AC_SUBST([ICD_FILE_INSTALL_DIR])
 
   dnl
   dnl Gallium helper functions
  diff --git a/src/gallium/targets/opencl/Makefile.am 
  b/src/gallium/targets/opencl/Makefile.am
  index 5daf327..9f0e58e 100644
  --- a/src/gallium/targets/opencl/Makefile.am
  +++ b/src/gallium/targets/opencl/Makefile.am
  @@ -47,7 +47,7 @@ EXTRA_lib@OPENCL_LIBNAME@_la_DEPENDENCIES = opencl.sym
   EXTRA_DIST = mesa.icd opencl.sym
 
   if HAVE_CLOVER_ICD
  -icddir = /etc/OpenCL/vendors/
  +icddir = $(ICD_FILE_INSTALL_DIR)
   icd_DATA = mesa.icd
   endif
 
  --
  2.1.0
 
  ___
  mesa-dev mailing list
  mesa-dev@lists.freedesktop.org
  http://lists.freedesktop.org/mailman/listinfo/mesa-dev
 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-04 Thread Ilia Mirkin
On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
 On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
 On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
  The standard ICD file path is /etc/OpenCL/vendor/.
  However it doesn't fit well with custom build.
  This option allow ICD vendor file installation path override
  ---
   configure.ac   | 6 ++
   src/gallium/targets/opencl/Makefile.am | 2 +-
   2 files changed, 7 insertions(+), 1 deletion(-)
 
  diff --git a/configure.ac b/configure.ac
  index 095e23e..bf08d76 100644
  --- a/configure.ac
  +++ b/configure.ac
  @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
   [D3D_DRIVER_INSTALL_DIR=$withval],
   [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
   AC_SUBST([D3D_DRIVER_INSTALL_DIR])
  +AC_ARG_WITH([icd-file-dir],
  +[AS_HELP_STRING([--with-icd-file-dir=DIR],
  +[directory for the OpenCL ICD vendor file 
  @:@/etc/OpenCL/vendors@:@])],
  +[ICD_FILE_INSTALL_DIR=$withval],
  +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])

 What about making this default to ${sysconfdir}/OpenCL/vendors ? That
 way using --prefix should auto-make it go into the prefix instead of
 unexpectedly installing things outside of the specified prefix? That
 way a distro build which specifies --sysconfdir as /etc will get it in
 the right place, while by default it'll go into /usr/local/etc and a
 user can override the icd loader's default behaviour with
 OPENCL_VENDOR_PATH?


 I would prefer not to make this the default behavior, because it violates the 
 spec
 and there could potentially be multiple icd implementations, which may or may 
 not have
 the overrides.

 I think the best solution would be to rename the option to something like
 --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
 and have the option enable the behavior that Ilia is describing.

 This will give distros and advanced users a way to setup their system
 the way they want.

It's just a very anti-autoconf thing to do to have make install fail
by default unless you specify some hey, i actually want make install
to work option.

I think it's crazy to expect that, by default, people will want to
write over their system installs, and having things go outside of the
specified --prefix is very surprising (unless you force some other
option). And asking the user to run make install as root is even
crazier.

I guess I haven't hit this yet because there's no OpenCL support in
nouveau or freedreno, but I made the same stink about vdpau when Emil
tried to make it install to some system location by default. At least
a few people seemed to agree with me back then...

  -ilia
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-04 Thread Tom Stellard
On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
 On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
  On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
  On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
   The standard ICD file path is /etc/OpenCL/vendor/.
   However it doesn't fit well with custom build.
   This option allow ICD vendor file installation path override
   ---
configure.ac   | 6 ++
src/gallium/targets/opencl/Makefile.am | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
  
   diff --git a/configure.ac b/configure.ac
   index 095e23e..bf08d76 100644
   --- a/configure.ac
   +++ b/configure.ac
   @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
[D3D_DRIVER_INSTALL_DIR=$withval],
[D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
AC_SUBST([D3D_DRIVER_INSTALL_DIR])
   +AC_ARG_WITH([icd-file-dir],
   +[AS_HELP_STRING([--with-icd-file-dir=DIR],
   +[directory for the OpenCL ICD vendor file 
   @:@/etc/OpenCL/vendors@:@])],
   +[ICD_FILE_INSTALL_DIR=$withval],
   +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
 
  What about making this default to ${sysconfdir}/OpenCL/vendors ? That
  way using --prefix should auto-make it go into the prefix instead of
  unexpectedly installing things outside of the specified prefix? That
  way a distro build which specifies --sysconfdir as /etc will get it in
  the right place, while by default it'll go into /usr/local/etc and a
  user can override the icd loader's default behaviour with
  OPENCL_VENDOR_PATH?
 
 
  I would prefer not to make this the default behavior, because it violates 
  the spec
  and there could potentially be multiple icd implementations, which may or 
  may not have
  the overrides.
 
  I think the best solution would be to rename the option to something like
  --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
  and have the option enable the behavior that Ilia is describing.
 
  This will give distros and advanced users a way to setup their system
  the way they want.
 
 It's just a very anti-autoconf thing to do to have make install fail
 by default unless you specify some hey, i actually want make install
 to work option.
 
 I think it's crazy to expect that, by default, people will want to
 write over their system installs, and having things go outside of the
 specified --prefix is very surprising (unless you force some other
 option). And asking the user to run make install as root is even
 crazier.
 

My expectation is that, by default, when people specify --enable-opencl-icd
they want an implementation that conforms to the specification.
Unfortunately, this means installing icd files to /etc.

There is no good solution here, but I'd rather have users specify a flag
to get a sane build system, than requiring them to set a flag and set
an environment variable just to get working OpenCL with the ICD loader.

 I guess I haven't hit this yet because there's no OpenCL support in
 nouveau or freedreno, but I made the same stink about vdpau when Emil
 tried to make it install to some system location by default. At least
 a few people seemed to agree with me back then...
 

Does the vdpau spec also require installation to a specific system director
(e.g. /etc/) ?

-Tom

   -ilia
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-04 Thread Ilia Mirkin
On Mon, May 4, 2015 at 12:47 PM, Tom Stellard t...@stellard.net wrote:
 On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
 On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
  On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
  On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
   The standard ICD file path is /etc/OpenCL/vendor/.
   However it doesn't fit well with custom build.
   This option allow ICD vendor file installation path override
   ---
configure.ac   | 6 ++
src/gallium/targets/opencl/Makefile.am | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
  
   diff --git a/configure.ac b/configure.ac
   index 095e23e..bf08d76 100644
   --- a/configure.ac
   +++ b/configure.ac
   @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
[D3D_DRIVER_INSTALL_DIR=$withval],
[D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
AC_SUBST([D3D_DRIVER_INSTALL_DIR])
   +AC_ARG_WITH([icd-file-dir],
   +[AS_HELP_STRING([--with-icd-file-dir=DIR],
   +[directory for the OpenCL ICD vendor file 
   @:@/etc/OpenCL/vendors@:@])],
   +[ICD_FILE_INSTALL_DIR=$withval],
   +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
 
  What about making this default to ${sysconfdir}/OpenCL/vendors ? That
  way using --prefix should auto-make it go into the prefix instead of
  unexpectedly installing things outside of the specified prefix? That
  way a distro build which specifies --sysconfdir as /etc will get it in
  the right place, while by default it'll go into /usr/local/etc and a
  user can override the icd loader's default behaviour with
  OPENCL_VENDOR_PATH?
 
 
  I would prefer not to make this the default behavior, because it violates 
  the spec
  and there could potentially be multiple icd implementations, which may or 
  may not have
  the overrides.
 
  I think the best solution would be to rename the option to something like
  --enable-ocl-icd-respect-prefix (suggestions for other names encouraged).
  and have the option enable the behavior that Ilia is describing.
 
  This will give distros and advanced users a way to setup their system
  the way they want.

 It's just a very anti-autoconf thing to do to have make install fail
 by default unless you specify some hey, i actually want make install
 to work option.

 I think it's crazy to expect that, by default, people will want to
 write over their system installs, and having things go outside of the
 specified --prefix is very surprising (unless you force some other
 option). And asking the user to run make install as root is even
 crazier.


 My expectation is that, by default, when people specify --enable-opencl-icd
 they want an implementation that conforms to the specification.
 Unfortunately, this means installing icd files to /etc.

Oh, does this only happen when I supply some option? I.e. if I just do
./configure --prefix=... it'll still work, I have to do
--enable-opencl-icd and only *then* does it install the other thing?
That might be more acceptable, although still not really.


 There is no good solution here, but I'd rather have users specify a flag
 to get a sane build system, than requiring them to set a flag and set
 an environment variable just to get working OpenCL with the ICD loader.

I know exceedingly little about OpenCL. I'm just coming at this from a
generic build shouldn't try to install things outside the prefix
perspective. Make install shouldn't fail, and users shouldn't be
tempted into accidentally overwriting their system installs even
though they set a prefix but then foolishly ran 'sudo make install'.

Autoconf is a pretty common build helper, nearly every sane package
with a unix build target uses it, and I think people are used to how
it works. One of the cool things is that you can do ./configure
--prefix=/home/user/install; make install and expect it to work (as
in, things landing in /home/user/install/..., not in /). Or perhaps
you use a system like 'stow' which takes care of all the
symlinking/etc and allows you to easily have multiple versions of the
same software.

Having things go outside of the configured directories goes against
the autoconf standard... perhaps it'd be OK if you added some giant
warning at the end of configure output saying DANGER DANGER DANGER
will do unexpected things by default!.


 I guess I haven't hit this yet because there's no OpenCL support in
 nouveau or freedreno, but I made the same stink about vdpau when Emil
 tried to make it install to some system location by default. At least
 a few people seemed to agree with me back then...


 Does the vdpau spec also require installation to a specific system director
 (e.g. /etc/) ?

The vdpau loader (libvdpau) loads from a fixed (and arbitrarily
configurable at build-time, and practically speaking set differently
on different distributions) library directory, much like (the mesa)
libGL does. However there's (now) a VDPAU_DRIVER_PATH or something

Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-04 Thread Aaron Watry
On Mon, May 4, 2015 at 12:11 PM, Ilia Mirkin imir...@alum.mit.edu wrote:

 On Mon, May 4, 2015 at 12:47 PM, Tom Stellard t...@stellard.net wrote:
  On Mon, May 04, 2015 at 10:13:19AM -0400, Ilia Mirkin wrote:
  On Mon, May 4, 2015 at 10:04 AM, Tom Stellard t...@stellard.net wrote:
   On Sat, May 02, 2015 at 01:31:41PM -0400, Ilia Mirkin wrote:
   On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
The standard ICD file path is /etc/OpenCL/vendor/.
However it doesn't fit well with custom build.
This option allow ICD vendor file installation path override
---
 configure.ac   | 6 ++
 src/gallium/targets/opencl/Makefile.am | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
   
diff --git a/configure.ac b/configure.ac
index 095e23e..bf08d76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
 [D3D_DRIVER_INSTALL_DIR=$withval],
 [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
+AC_ARG_WITH([icd-file-dir],
+[AS_HELP_STRING([--with-icd-file-dir=DIR],
+[directory for the OpenCL ICD vendor file
 @:@/etc/OpenCL/vendors@:@])],
+[ICD_FILE_INSTALL_DIR=$withval],
+[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
  
   What about making this default to ${sysconfdir}/OpenCL/vendors ? That
   way using --prefix should auto-make it go into the prefix instead of
   unexpectedly installing things outside of the specified prefix? That
   way a distro build which specifies --sysconfdir as /etc will get it
 in
   the right place, while by default it'll go into /usr/local/etc and a
   user can override the icd loader's default behaviour with
   OPENCL_VENDOR_PATH?
  
  
   I would prefer not to make this the default behavior, because it
 violates the spec
   and there could potentially be multiple icd implementations, which
 may or may not have
   the overrides.
  
   I think the best solution would be to rename the option to something
 like
   --enable-ocl-icd-respect-prefix (suggestions for other names
 encouraged).
   and have the option enable the behavior that Ilia is describing.
  
   This will give distros and advanced users a way to setup their system
   the way they want.
 
  It's just a very anti-autoconf thing to do to have make install fail
  by default unless you specify some hey, i actually want make install
  to work option.
 
  I think it's crazy to expect that, by default, people will want to
  write over their system installs, and having things go outside of the
  specified --prefix is very surprising (unless you force some other
  option). And asking the user to run make install as root is even
  crazier.
 
 
  My expectation is that, by default, when people specify
 --enable-opencl-icd
  they want an implementation that conforms to the specification.
  Unfortunately, this means installing icd files to /etc.

 Oh, does this only happen when I supply some option? I.e. if I just do
 ./configure --prefix=... it'll still work, I have to do
 --enable-opencl-icd and only *then* does it install the other thing?
 That might be more acceptable, although still not really.

 
  There is no good solution here, but I'd rather have users specify a flag
  to get a sane build system, than requiring them to set a flag and set
  an environment variable just to get working OpenCL with the ICD loader.

 I know exceedingly little about OpenCL. I'm just coming at this from a
 generic build shouldn't try to install things outside the prefix
 perspective. Make install shouldn't fail, and users shouldn't be
 tempted into accidentally overwriting their system installs even
 though they set a prefix but then foolishly ran 'sudo make install'.

 Autoconf is a pretty common build helper, nearly every sane package
 with a unix build target uses it, and I think people are used to how
 it works. One of the cool things is that you can do ./configure
 --prefix=/home/user/install; make install and expect it to work (as
 in, things landing in /home/user/install/..., not in /). Or perhaps
 you use a system like 'stow' which takes care of all the
 symlinking/etc and allows you to easily have multiple versions of the
 same software.

 Having things go outside of the configured directories goes against
 the autoconf standard... perhaps it'd be OK if you added some giant
 warning at the end of configure output saying DANGER DANGER DANGER
 will do unexpected things by default!.

 
  I guess I haven't hit this yet because there's no OpenCL support in
  nouveau or freedreno, but I made the same stink about vdpau when Emil
  tried to make it install to some system location by default. At least
  a few people seemed to agree with me back then...
 
 
  Does the vdpau spec also require installation to a specific system
 director
  (e.g. /etc/) ?

 The vdpau loader (libvdpau) loads from a fixed (and arbitrarily
 configurable at build-time, and 

[Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-02 Thread EdB
The standard ICD file path is /etc/OpenCL/vendor/.
However it doesn't fit well with custom build.
This option allow ICD vendor file installation path override
---
 configure.ac   | 6 ++
 src/gallium/targets/opencl/Makefile.am | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 095e23e..bf08d76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
 [D3D_DRIVER_INSTALL_DIR=$withval],
 [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
+AC_ARG_WITH([icd-file-dir],
+[AS_HELP_STRING([--with-icd-file-dir=DIR],
+[directory for the OpenCL ICD vendor file 
@:@/etc/OpenCL/vendors@:@])],
+[ICD_FILE_INSTALL_DIR=$withval],
+[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])
+AC_SUBST([ICD_FILE_INSTALL_DIR])
 
 dnl
 dnl Gallium helper functions
diff --git a/src/gallium/targets/opencl/Makefile.am 
b/src/gallium/targets/opencl/Makefile.am
index 5daf327..9f0e58e 100644
--- a/src/gallium/targets/opencl/Makefile.am
+++ b/src/gallium/targets/opencl/Makefile.am
@@ -47,7 +47,7 @@ EXTRA_lib@OPENCL_LIBNAME@_la_DEPENDENCIES = opencl.sym
 EXTRA_DIST = mesa.icd opencl.sym
 
 if HAVE_CLOVER_ICD
-icddir = /etc/OpenCL/vendors/
+icddir = $(ICD_FILE_INSTALL_DIR)
 icd_DATA = mesa.icd
 endif
 
-- 
2.1.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] clover: add --with-icd-file-dir option

2015-05-02 Thread Ilia Mirkin
On Sat, May 2, 2015 at 1:19 PM, EdB edb+m...@sigluy.net wrote:
 The standard ICD file path is /etc/OpenCL/vendor/.
 However it doesn't fit well with custom build.
 This option allow ICD vendor file installation path override
 ---
  configure.ac   | 6 ++
  src/gallium/targets/opencl/Makefile.am | 2 +-
  2 files changed, 7 insertions(+), 1 deletion(-)

 diff --git a/configure.ac b/configure.ac
 index 095e23e..bf08d76 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -2005,6 +2005,12 @@ AC_ARG_WITH([d3d-libdir],
  [D3D_DRIVER_INSTALL_DIR=$withval],
  [D3D_DRIVER_INSTALL_DIR=${libdir}/d3d])
  AC_SUBST([D3D_DRIVER_INSTALL_DIR])
 +AC_ARG_WITH([icd-file-dir],
 +[AS_HELP_STRING([--with-icd-file-dir=DIR],
 +[directory for the OpenCL ICD vendor file 
 @:@/etc/OpenCL/vendors@:@])],
 +[ICD_FILE_INSTALL_DIR=$withval],
 +[ICD_FILE_INSTALL_DIR=/etc/OpenCL/vendors])

What about making this default to ${sysconfdir}/OpenCL/vendors ? That
way using --prefix should auto-make it go into the prefix instead of
unexpectedly installing things outside of the specified prefix? That
way a distro build which specifies --sysconfdir as /etc will get it in
the right place, while by default it'll go into /usr/local/etc and a
user can override the icd loader's default behaviour with
OPENCL_VENDOR_PATH?

 +AC_SUBST([ICD_FILE_INSTALL_DIR])

  dnl
  dnl Gallium helper functions
 diff --git a/src/gallium/targets/opencl/Makefile.am 
 b/src/gallium/targets/opencl/Makefile.am
 index 5daf327..9f0e58e 100644
 --- a/src/gallium/targets/opencl/Makefile.am
 +++ b/src/gallium/targets/opencl/Makefile.am
 @@ -47,7 +47,7 @@ EXTRA_lib@OPENCL_LIBNAME@_la_DEPENDENCIES = opencl.sym
  EXTRA_DIST = mesa.icd opencl.sym

  if HAVE_CLOVER_ICD
 -icddir = /etc/OpenCL/vendors/
 +icddir = $(ICD_FILE_INSTALL_DIR)
  icd_DATA = mesa.icd
  endif

 --
 2.1.0

 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev