RPM Community Forums

Mailing List Message of <rpm-devel>

Re: Different src and build directories fail (HEAD)

From: Mark Hatle <mark.hatle@windriver.com>
Date: Fri 29 Jun 2007 - 01:07:43 CEST
Message-ID: <46843F3F.8010606@windriver.com>
New patch.  There is still a bug, but I don't believe it is with the
include or library directory stuff.

In the patch I've made the following changes:

Changed the directory check to make sure that it looks at the srcdir,
and not the current working directory.

for the library and include directories I renamed _rcl_basedir to
_rcl_srcdir, and added a new _rcl_builddir.

We have to have includes from both the src and build dirs.. and the
libraries need to be picked up from the builddir.

Note, one thing I did notice is that you can't use symlinks to specify
your directories..  Looks like a configure limitation.

---------

Now for the second issue.

I'm configuring w/ --with-lua and --with-db (both set internal).  When
it links the librpmmisc.so, the symbols for lua and db items are "t" not
"T" indicating they are local, so applications, like rpmdeps, are
refusing to link.  I can switch to linking to librpmmisc.a and it works
fine, just not the .so version.

Mark Hatle wrote:
> I can't configure while outside of the RPM src directory.  A relatively
> simple change to acinclude.m4 appears to fix the problem.. But there are
> other problems later, where it appears the db3 stuff isn't configured.
> 
> I figured I would start w/ the simple patch, and hope it leads to some
> quick simple fixes.  :)  (let me know if you want me to submit this.)
> 
> When running autoconf with the patch, it does give me a warning about
> using ${srcdir} in the AC_CONFIG_SUBDIRS.  Is that really necessary?
> 
> --Mark

? db
? file
? lua
? popt
? zlib
Index: acinclude.m4
===================================================================
RCS file: /v/rpm/cvs/rpm/acinclude.m4,v
retrieving revision 2.15
diff -u -r2.15 acinclude.m4
--- acinclude.m4	28 Jun 2007 06:12:33 -0000	2.15
+++ acinclude.m4	28 Jun 2007 22:34:52 -0000
@@ -146,9 +146,9 @@
                     m4_define([__rcl_subdir],
                               [m4_if(m4_index([$7], [:]), -1, [$7],
                                      m4_substr([$7], 0, m4_index([$7], [:])))])
-                    if test -d __rcl_subdir; then
+                    if test -d ${srcdir}/__rcl_subdir; then
                         AC_MSG_VERBOSE([-- activating local sub-directory: __rcl_subdir])
-                        if test -f __rcl_subdir/configure; then
+                        if test -f ${srcdir}/__rcl_subdir/configure; then
                             AC_CONFIG_SUBDIRS(__rcl_subdir)
                         fi
                         dnl # NOTICE: an internal copy of the third-party library is a tricky thing
@@ -175,32 +175,37 @@
                         AC_MSG_VERBOSE([++ post-adjustments for --with-$2 (${__rcl_location_$2})])
                         __rcl_dirs_inc=`echo '$7' | sed -e 's/^[[^:]]*://' -e 's/:[[^:]]*[$]//'`
                         __rcl_dirs_lib=`echo '$7' | sed -e 's/^[[^:]]*:[[^:]]*://'`
-                        __rcl_basedir="\[$](top_srcdir)/\[$](WITH_[]m4_translit([$2],[a-z],[A-Z])[]_SUBDIR)"
+                        __rcl_srcdir="\[$](top_srcdir)/\[$](WITH_[]m4_translit([$2],[a-z],[A-Z])[]_SUBDIR)"
+                        __rcl_builddir="\[$](top_builddir)/\[$](WITH_[]m4_translit([$2],[a-z],[A-Z])[]_SUBDIR)"
                         __rcl_firstlib="m4_if(m4_index([$3], [ ]), -1, [$3], m4_substr([$3], 0, m4_index([$3], [ ])))"
                         if test ".${__rcl_dirs_inc}" != ".$7"; then
                             __rcl_IFS="${IFS}"; IFS=","
                             for __rcl_dir in ${__rcl_dirs_inc}; do
                                 IFS="${__rcl_IFS}"
                                 test ".${__rcl_dir}" = . && continue
-                                AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_basedir}/${__rcl_dir}])
-                                WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_basedir}/${__rcl_dir}"
+                                AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_srcdir}/${__rcl_dir}])
+                                WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_srcdir}/${__rcl_dir}"
+                                AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_builddir}/${__rcl_dir}])
+                                WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_builddir}/${__rcl_dir}"
                             done
                             IFS="${__rcl_IFS}"
                         fi
-                        AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_basedir}])
-                        WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_basedir}"
+                        AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_srcdir}])
+                        WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_srcdir}"
+                        AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS: -I${__rcl_builddir}])
+                        WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_CPPFLAGS} -I${__rcl_builddir}"
                         if test ".${__rcl_dirs_lib}" != ".$7"; then
                             __rcl_IFS="${IFS}"; IFS=","
                             for __rcl_dir in ${__rcl_dirs_lib}; do
                                 IFS="${__rcl_IFS}"
                                 test ".${__rcl_dir}" = . && continue
-                                AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS: -L${__rcl_basedir}/${__rcl_dir}])
-                                WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS} -L${__rcl_basedir}/${__rcl_dir}"
+                                AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS: -L${__rcl_builddir}/${__rcl_dir}])
+                                WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS} -L${__rcl_builddir}/${__rcl_dir}"
                             done
                             IFS="${__rcl_IFS}"
                         fi
-                        AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS: -L${__rcl_basedir}])
-                        WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS} -L${__rcl_basedir}"
+                        AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS: -L${__rcl_builddir}])
+                        WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LDFLAGS} -L${__rcl_builddir}"
                         AC_MSG_VERBOSE([-- extending WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LIBS: -l${__rcl_firstlib}])
                         WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LIBS="${WITH_[]m4_translit([$2],[a-z],[A-Z])[]_LIBS} -l${__rcl_firstlib}"
                         __rcl_result_hint="internal: sub-directory __rcl_subdir"
Received on Fri Jun 29 01:07:50 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.