On Mon, Sep 30, 2013 at 11:59:57PM -0400, Gaetan Nadon wrote: > On 13-09-30 06:24 PM, Peter Hutterer wrote: > > On Mon, Sep 30, 2013 at 01:56:53PM -0400, Gaetan Nadon wrote: > >> The location of the udevdir is obtained from pkg-config. This is generally > >> /lib/udev. Most people run their build scripts as non-root and do not want > >> to > >> overwrite or add files on their workstation system. > >> > >> This was not the behaviour in release 12.8.0. The code in configure.ac set > >> udevdir based on common installation prefixes /usr or /usr/local for which > >> the user would probably have root permission anyway. Other prefixes would > >> be assigned a udevdir value under the given $prefix. > >> > >> The patch proposes the default location $libdir/udev/rules.d and no longer > >> seeking it's value from pkg-config, just like what was done for hal. > > is udevdir to be retired? iirc HAL never exported this as a variable > > hence the hardcoded path, but I think relying on the udev package to tell > > you where to look for data is the correct approach. > The only usage of $udevdir is for the installation of the rules file, > which must be done under $prefix. If one needs to get information from > the real workstation system udev, then yes, the corect approach would > be to look in lib/udev/rules.d obtained from from pkg-config. However, I > have not seen any such activity in any of the makefiles of C code. > > With the current git code, the problem is reversed. If I configure the > module to install the rules file under $prefix, then I would be no > longer able to "look for data" in the system udev. > > There are always two directories, the one under $prefix, and the real > system directory which is mirrored by $prefix. Consider binaries and > libraries. They install under $prefix, but can access other system bins > and libs through environment variables that are providing an ordered > path of locations. No such thing with udev. > > From the man page: > > Rules files > The udev rules are read from the files located in the default > rules > directory /lib/udev/rules.d/, the custom rules directory > /etc/udev/rules.d/ and the temporary rules directory > /run/udev/rules.d/. All rule files are collectively sorted and > processed in lexical order, regardless of the directories in > which they > live. However, files in /etc/udev/rules.d/ take precedence > over files > with the same name in /lib/udev/rules.d/; this can be used to > ignore a > default rules file if needed. > > These alternate location also require root access, so no help there. > > I think the patch is correct and is an improvement over the current > code, but it does not address the "two directories" situation, the real > one vs the $prefix one. If my assumption that there is no need to query > the real udev system is correct, then the patch is all we need.
ok, fair enough. but that brings up the next question: $libdir is /usr/lib, right? so if you want to install into /lib/udev/rules.d you need something else than $libdir. On Fedora that's the same directory nowadays, but on other distros /lib and /usr/lib are separate. Cheers, Peter > > > > > your patch has two changes: remove udev pkgconfig bits and change the > > default. I agree with the latter, it seems the right thing to do, but not > > the former. > The former is still an open issue which the patch has slightly changed > its manifestation. > > > > Cheers, > > Peter > > > > > >> The expectation is that the xorg source tree can be built from top to > >> bottom > >> out of the box without tweaks or workarounds. A developer need to > >> manually install a rule under development and run an admin command for it > >> to > >> take effect. Unlike binaries or libraries, there is no "path" style > >> variable to append a rule in development from a different location. > >> > >> Signed-off-by: Gaetan Nadon <[email protected]> > >> --- > >> configure.ac | 15 ++++++--------- > >> 1 file changed, 6 insertions(+), 9 deletions(-) > >> > >> diff --git a/configure.ac b/configure.ac > >> index 52ea460..83a8488 100644 > >> --- a/configure.ac > >> +++ b/configure.ac > >> @@ -91,17 +91,14 @@ AC_ARG_WITH(hal-fdi-dir, > >> HAL_FDI_DIR=${halfdidir} > >> AC_SUBST(HAL_FDI_DIR) > >> > >> - > >> -PKG_CHECK_MODULES(UDEV, udev, > >> - [UDEV_RULES_DIR="`$PKG_CONFIG --variable=udevdir > >> udev`/rules.d"], > >> - [UDEV_RULES_DIR=no]) > >> - > >> +# Udev location for rules directory > >> AC_ARG_WITH(udev-rules-dir, > >> AS_HELP_STRING([--with-udev-rules-dir=DIR], > >> - [Default udev rules.d directory > >> - [[default=($prefix)/lib/udev/rules.d on Linux, none > >> otherwise]]]), > >> - [UDEV_RULES_DIR="$withval"], > >> - []) > >> + [Directory where udev expects its rules files > >> + [[default=$libdir/udev/rules.d]]]), > >> + [udevdir="$withval"], > >> + [udevdir="$libdir/udev/rules.d"]) > >> +UDEV_RULES_DIR=${udevdir} > >> AC_SUBST(UDEV_RULES_DIR) > >> AM_CONDITIONAL(HAS_UDEV_RULES_DIR, [test "x$UDEV_RULES_DIR" != "xno"]) > >> > >> -- > >> 1.7.9.5 > >> > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
