trinity-devel@lists.pearsoncomputing.net

Message: previous - next
Month: February 2012

[SOLVED - sort of] Re: [trinity-devel] Howto prevent LDFLAGS --sort-common,--as-needed,<snip>,--hash-style=gnu

From: "David C. Rankin" <drankinatty@...>
Date: Tue, 28 Feb 2012 12:10:02 -0600
On 02/28/2012 11:16 AM, David C. Rankin wrote:
> On 02/28/2012 09:52 AM, Calvin Morrison wrote:
>>
>> After editing the admin/acinclude.m4.in <http://acinclude.m4.in> make sure to
>> move back up to the twin-sytle folder and make maintainer-clean, make -f
>> admin/Makefile.common
>>
>> if you don't clear it out, you might not be seeing the changes. The only file
>> that should be edited (as far as grep tells me is the acinclude.m4.in
>> <http://acinclude.m4.in>) so regenerating everything could resolve the problem.
>>
>> Cal
> 
> Cal,
> 
>   If I'm building in an archroot and the source is deleted every time before a
> new build attempt, how can I be pulling stuff back in? It may be possible,
> because I don't know 'jack' about the autotools wizardry, but I can't see
> something with the twin-style-crystal source doing it. Also, I'm building from
> the kde-look.org tarball instead of the tde git tree. Is there a Arch (or any
> other distro for that matter) master file for autotools that might have this set
> in it?
> 
>   Any thoughts?
> 

OK,

  This isn't an Arch problems and it isn't a crystal source problem, this is an
autotools automake/aclocal problem. As a test, I decided to just build crystal
on my 3.5.12 box without any patches and without any mods (3.5.12 is in
/opt/kde3) and -- it built on the first try:

-rw-r--r--  1 david david 101932 Feb 28 11:23
kde3-kwinstyle-crystal-1.0.7-1-x86_64.pkg.tar.xz

  However, after I patch for the build on TDE from 'kdeui' to 'tdeui' then it
tries to run aclocal and automake and can't due to version problems.

cd . && /bin/sh /build/src/crystal-1.0.7/admin/missing --run aclocal-1.7
/build/src/crystal-1.0.7/admin/missing: line 52: aclocal-1.7: command not found
WARNING: `aclocal-1.7' is missing on your system.  You should only need it if
         you modified `acinclude.m4' or `configure.in'.  You might want
         to install the `Automake' and `Perl' packages.  Grab them from
         any GNU archive site.
cd . && \
  /bin/sh /build/src/crystal-1.0.7/admin/missing --run automake-1.7 --foreign
Makefile
/build/src/crystal-1.0.7/admin/missing: line 52: automake-1.7: command not found
WARNING: `automake-1.7' is missing on your system.  You should only need it if
         you modified `Makefile.am', `acinclude.m4' or `configure.in'.
         You might want to install the `Automake' and `Perl' packages.
         Grab them from any GNU archive site.

  OK, So to get over the version mismatch in aclocal and automake, I simply
tried linking the current aclocal/automake to aclocal-1.7 and automake-1.7. The
build proceeded without the same warning, but with a new warning:

cd . && /bin/sh /build/src/crystal-1.0.7/admin/missing --run aclocal-1.7
acinclude.m4:3699: the serial number must appear before any macro definition
acinclude.m4:3744: the serial number must appear before any macro definition
acinclude.m4:3789: the serial number must appear before any macro definition
acinclude.m4:5997: the serial number must appear before any macro definition
configure.in:51: warning: AC_REQUIRE: `AC_PROG_CC' was expanded before it was
required

  The build of crystal in TDE then fails in exactly the same place:

/bin/sh ../libtool --silent --tag=CXX   --mode=link g++  -march=x86-64
-mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4
-D_FORTIFY_SOURCE=2  -L/opt/trinity/lib -L/opt/qt3/lib
-L/opt/trinity/lib/trinity
-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -o embedtool
embedtool.o -lqt-mt  -lz -lpng -lz -lm -lXext -lX11  -lSM -lICE -lpthread
g++: error: unrecognized option '--sort-common'
g++: error: unrecognized option '--as-needed'
g++: error: unrecognized option '--hash-style=gnu'
make[2]: *** [embedtool] Error 1
make[2]: Leaving directory `/build/src/crystal-1.0.7/pics'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/build/src/crystal-1.0.7'
make: *** [all] Error 2

  So it looks like the renaming of 'kdeui' to 'tdeui' and ${TDEDIR}/lib/kde3 ->
${TDEDIR}/lib/trinity which requires patching to build on TDE causes the build
to fail due to the updated aclocal/automake not being compatible with whatever
is in twin-style-crystal. If the acinclude and aclocal files are not patched
(like when building on my 3.5.12 box), then aclocal/automake doesn't run and the
build completes successfully.

  I have no idea what is required to fix this on trinity, but one of you smarter
guys will have to help out, because we must have crystal window decoration on
TDE :) I don't know if Serghei could move this to cmake and get around this
problem, but I'm open to suggestions....


-- 
David C. Rankin, J.D.,P.E.