<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Mon, 2010-06-14 at 15:07 -0700, Dan Nicholson wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Sun, Jun 13, 2010 at 1:49 PM, Gaetan Nadon <<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>> wrote:
> Any module (drivers) depending on xserver also depends on some of the
> server private dependencies. Any driver including xf86.h depends on
> xext, kbproto, inputproto and randr.
>
> These dependencies are in separate packages, so anything can happen,
> removal, wrong version, etc... and the driver fails during compilation.
> Having the private dependencies declared will ensure all packages the
> server depends on are present and at the correct version.
>
> Currently each module attempts to check for server dependencies with
> various degrees of accuracy. With this patch, the driver will only need
> to check for its own explicit dependencies.
>
> Signed-off-by: Gaetan Nadon <<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>>
> ---
> configure.ac | 9 ++++++++-
> xorg-server.pc.in | 1 +
> 2 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 4ada8f5..cb33637 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -793,9 +793,13 @@ WINDOWSWMPROTO="windowswmproto"
> APPLEWMPROTO="applewmproto >= 1.4"
>
> dnl Core modules for most extensions, et al.
> -REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [fixesproto >= 4.1] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xextproto >= 7.0.99.3] [xproto >= 7.0.17] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] fontsproto [inputproto >= 1.9.99.902] [kbproto >= 1.0.3]"
> +SDK_REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [xextproto >= 7.0.99.3] [inputproto >= 1.9.99.902] [kbproto >= 1.0.3]"
> +REQUIRED_MODULES="[fixesproto >= 4.1] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xproto >= 7.0.17] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] fontsproto $SDK_REQUIRED_MODULES"
> REQUIRED_LIBS="xfont xau"
>
> +# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
> +AC_SUBST(SDK_REQUIRED_MODULES)
> +
> dnl List of libraries that require a specific version
> LIBAPPLEWM="applewm >= 1.4"
> LIBDMX="dmx >= 1.0.99.1"
> @@ -947,6 +951,7 @@ if test "x$XV" = xyes; then
> AC_DEFINE(XV, 1, [Support Xv extension])
> AC_DEFINE(XvExtension, 1, [Build Xv extension])
> REQUIRED_MODULES="$REQUIRED_MODULES $VIDEOPROTO"
> + SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $VIDEOPROTO"
> else
> XVMC=no
> fi
> @@ -1036,6 +1041,7 @@ case "$DRI2,$HAVE_DRI2PROTO" in
> yes,yes | auto,yes)
> AC_DEFINE(DRI2, 1, [Build DRI2 extension])
> DRI2=yes
> + SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
> ;;
> esac
> AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
> @@ -1074,6 +1080,7 @@ if test "x$XINERAMA" = xyes; then
> AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
> AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
> REQUIRED_MODULES="$REQUIRED_MODULES $XINERAMAPROTO"
> + SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
> fi
>
> AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
> diff --git a/xorg-server.pc.in b/xorg-server.pc.in
> index 44f886a..1fa4fb5 100644
> --- a/xorg-server.pc.in
> +++ b/xorg-server.pc.in
> @@ -16,5 +16,6 @@ Name: xorg-server
> Description: Modular X.Org X Server
> Version: @PACKAGE_VERSION@
> Requires: pixman-1 pciaccess xproto >= 7.0.17
> +Requires.private: @SDK_REQUIRED_MODULES@
Could you also move the xproto requirement from REQUIRED_MODULES to
SDK_REQUIRED_MODULES so it's always populated from configure.ac? Maybe
that can go in another commit. Probably all the modules should be in
Requires.private, but that's probably another commit, too.
</PRE>
</BLOCKQUOTE>
I originally put all modules (save for xproto) in Requires.private. Julien suggested to put only the modules exposed in the sdk. <BR>
<BR>
As for xproto, all drivers use it explicitly and need the include path. I thought it was safer to leave it there as there might be an older driver that did not list xproto on the PKG_CHECK_MODULES statement and could potentially break. I am not sure I understand why you were suggesting that. <BR>
<BR>
Thanks<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
Looks good.
Reviewed-by: Dan Nicholson <<A HREF="mailto:dbn.lists@gmail.com">dbn.lists@gmail.com</A>>
--
Dan
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>