I have a tip to share regarding the dependency checking currently
going on.
While I do not know what exactly is the way editors check for
dependencies of packages, there is a way to fast track them, if your
main method is to build and wait to see which is the combination that
does not fail - a horrendous experience.
Now, dependencies are checked by the configure script, which itself is
generated from configure.ac (I am not sure what is the position of
configure.in in all this..).
Therefore, one can gain a lot of information on which packages are
required by inspecting the configure* files.
Say, like this:
grep -h -v '^[[:space:]]*dnl' <package_dir>/configure* | \
grep -v '^[[:space:]]*#' | grep --color -i req
A sample output, this one from pan, the newsreader:
AC_PREREQ(2.54)
GLIB_REQUIRED=2.14.0
GMIME_REQUIRED=2.4.0
GTK_REQUIRED=2.16.0
GTK3_REQUIRED=3.0.0
GTKSPELL_REQUIRED=2.0.7
AC_SUBST(GLIB_REQUIRED)
AC_SUBST(GMIME_REQUIRED)
AC_SUBST(GTK_REQUIRED)
AC_SUBST(GTKSPELL_REQUIRED)
AM_PATH_GLIB_2_0($GLIB_REQUIRED,,exit 1,gobject gmodule gthread)
PKG_CHECK_MODULES([GMIME], [ gmime-2.6 >= $GMIME_REQUIRED ], [],
[PKG_CHECK_MODULES( [GMIME], [gmime-2.4 >= $GMIME_REQUIRED]
)] ) PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= $GTK3_REQUIRED],
[gtk_msg="yes >= $GTK3_REQUIRED"
AM_PATH_GTK_2_0($GTK_REQUIRED,,exit 1,gthread)
PKG_CHECK_MODULES([GTKSPELL], [gtkspell-2.0 >=
$GTKSPELL_REQUIRED],
When viewing this output, we can see that this version of Pan requires
glib of at least 2.14, gmime of 2.4 and gtkspell of 2.0.7. For GTK+,
there are two paths one could take: either use the sensible GTK+-2, in
which case the minimum version is 2.16, or one could try the
all-new-fancy-and-slow GTK+-3, a path which requires at least
GTK+-3.0.0.
Here is another sample, this one taken with vim:
dnl Optional modules
VIDEOPROTO="videoproto"
COMPOSITEPROTO="compositeproto >= 0.4"
RECORDPROTO="recordproto >= 1.13.99.1"
SCRNSAVERPROTO="scrnsaverproto >= 1.1"
RESOURCEPROTO="resourceproto"
DRIPROTO="xf86driproto >= 2.1.0"
DRI2PROTO="dri2proto >= 2.6"
XINERAMAPROTO="xineramaproto"
BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
DGAPROTO="xf86dgaproto >= 2.0.99.1"
GLPROTO="glproto >= 1.4.14"
DMXPROTO="dmxproto >= 2.2.99.1"
VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
WINDOWSWMPROTO="windowswmproto"
APPLEWMPROTO="applewmproto >= 1.4"
dnl Core modules for most extensions, et al.
SDK_REQUIRED_MODULES="[xproto >= 7.0.22] [randrproto >= 1.2.99.3]
[renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 1.9.99.902]
[kbproto >= 1.0.3] fontsproto"
# 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"
LIBDRI="dri >= 7.8.0"
LIBDRM="libdrm >= 2.3.0"
LIBGL="gl >= 7.1.0"
LIBXEXT="xext >= 1.0.99.4"
LIBXFONT="xfont >= 1.4.2"
LIBXI="xi >= 1.2.99.1"
LIBXTST="xtst >= 1.0.99.2"
LIBPCIACCESS="pciaccess >= 0.8.0"
LIBUDEV="libudev >= 143"
LIBSELINUX="libselinux >= 2.0.86"
LIBDBUS="dbus-1 >= 1.0"
LIBPIXMAN="pixman-1 >= 0.21.8"
dnl Pixman is always required, but we separate it out so we can link
dnl specific modules against it
PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
REQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
REQUIRED_MODULES="[fixesproto >= 5.0] [damageproto >= 1.1] [xcmiscproto
>= 1.2.0] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0]
>$SDK_REQUIRED_MODULES"
This is from xorg-xserver-1.11.1, and this is where this method saved
me my head and sanity. You just go through the list checking of the
dependencies, like a grocery list. :) (and try no to think of the
horrors you would have went through if you had to do a configure for
_every_single_ one of them only to see you need a version which is
0.0.1 higher then the one you have)
Generaly, I belive the editor approach to be better since most of those
X server dependencies there would not be seen otherwise, but it can be
time consuming.
Also, please note that, as we all know, some configure scripts do not
check for needed dependencies and you only find out about something
missing when the build breaks or, if you are unlucky, at run-time.
Hope this helps you save time.
--
Fourth law of programming:
Anything that can go wrong wi
sendmail: segmentation violation - core dumped
--
http://linuxfromscratch.org/mailman/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page