pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/44735 (pkgsrc 2010Q4 Solaris 2.{8,10} lang/gcc3 build failed (libtool problem ?))



The following reply was made to PR pkg/44735; it has been noted by GNATS.

From: Wolfgang Stukenbrock <Wolfgang.Stukenbrock%nagler-company.com@localhost>
To: zingelman%gmail.com@localhost
Cc: gnats-bugs%netbsd.org@localhost,
        Wolfgang Stukenbrock 
<Wolfgang.Stukenbrock%nagler-company.com@localhost>,
        solaris-pkg-people%netbsd.org@localhost, 
gnats-admin%netbsd.org@localhost,
        pkgsrc-bugs%netbsd.org@localhost
Subject: Re: pkg/44735 (pkgsrc 2010Q4 Solaris 2.{8,10} lang/gcc3 build failed 
(libtool problem ?))
Date: Mon, 28 Mar 2011 10:17:57 +0200

 Hi again,
 
 just to clarify the "main" problem again to avoid possible confusion.
 It is not /usr/pkg/bin/libtool where the wrong shell is in.
 It is a generated libtool script inside of the gcc3 tree.
 I do not track down till now how it is generated. And the problem only 
 comes up, if the last argument to install is not a directory.
 
 
 Last "my" current "final" state of mk.conf setup that now seems to 
 compile everything correctly. I know that is not 100% related to the 
 original cause of the PR, but it belongs into the same category from my 
 point of view.
 
 When useing sunstudio compiler most times and use gcc(3) only for 
 packages where syntax problems (or simular) occur. the following 
 "workaround" work for gcc3 and everything required for samba.
 (see some additional bug reports on "bad" sources in some packages too.)
 
 I introduce a new make variable to switch between the compilers: NC_PKG_GCC
 I set this in the Makefile or Makefile.common for the packages that 
 cannot be build with sunstudio for whatever resons.
 
 mk.conf contents for building packages in pkgsrc.
 In addition to the currently reported -G option, gcc doesn't understand
 -library=... that needs to be eliminated.
 Than "-Qoption ld -R..." need to be transformed to either -R... or 
 -Wl,-R... (I transform it to -R.... below)
 When -xar is specified we need to change the command from CC to AR and 
 eliminate any additional options that are placed there by libtool from 
 the command line (some -L.., -m64, ...)
 remark: this is no completet analyses of the options, I just fixed the 
 one that keep the sutff from compiling/installing.
 The currently available support by the wrappers that can be controlled 
 by setting some variables in the makefile is not abled to support the 
 required modification for -xar and -Qoption. The support to specify 
 additional wrapper script generation code looks imcomplete to me. but 
 perhaps I've haven't got the main point till now.
 
 Now the mk.conf script part for pkgsrc-builds:
 
 
 ABI=                    64
 .ifdef NC_PKG_GCC
 PKGSRC_COMPILER=        gcc
 CC=                     /usr/pkg/gcc3/bin/gcc
 CXX=                    /usr/pkg/gcc3/bin/g++
 CPP=                    /usr/pkg/gcc3/bin/cpp
 
 WRAPPER_TRANSFORM_CMDS+= opt:-G:-shared rm:-library=.*
 
 _WRAP_ARG_PP.CXX=       ${.CURDIR}/work/.wrapper/tmp/arg-pp.CXX
 
 ${_WRAP_ARG_PP.CXX}:
          ${RUN} ${MKDIR} ${.TARGET:H}
          ${RUN} ${ECHO} 'case $$arg in' 
                          >  ${.TARGET}
          ${RUN} ${ECHO} '-xar) cmd="/usr/ccs/bin/ar cru"; argmatch=yes; 
 xxx_kill_args=1'        >> ${.TARGET}
          ${RUN} ${ECHO} '# need to kill the following -o option - we 
 know that it is there ...' >> ${.TARGET}
          ${RUN} ${ECHO} '      pop_queue argbuf arg' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '      ;;' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '-Qoption) argmatch=yes' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '# need to kill the following ld argument - we 
 know that it is there ...' >> ${.TARGET}
          ${RUN} ${ECHO} '      pop_queue argbuf arg; arg=""' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '      ;;' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '-*)   if [ -n "$$xxx_kill_args" ]; then' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '# need to kill the current argument in case it 
 is the last one ...'    >> ${.TARGET}
          ${RUN} ${ECHO} '        arg=""; argmatch=yes; do_transform=no' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '      fi' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} '      ;;' 
                          >> ${.TARGET}
          ${RUN} ${ECHO} 'esac' 
                          >> ${.TARGET}
 
 .else
 PKGSRC_COMPILER=        sunpro
 CC=                     cc
 CXX=                    CC
 CPP=                    ${CC} -E
 SUNWSPROBASE=           /opt/SUNWspro
 .endif
 
 MACHINE_GNU_PLATFORM=   sparc64-sun-solaris2
 SPARC_TARGET_ARCH=      sparcv9
 
 PKG_DBDIR=              /var/db/pkg
 LOCALBASE=              /usr/pkg
 VARBASE=                /var
 PKG_TOOLS_BIN=          /usr/pkg/sbin
 PKGMANDIR=              man
 
 TOOLS_PLATFORM.install?=        /usr/pkg/bin/install-sh
 TOOLS_PLATFORM.sh?=             /usr/pkg/bin/pdksh
 TOOLS_PLATFORM.ksh?=            /usr/pkg/bin/pdksh
 TOOLS_PLATFORM.awk?=            /usr/pkg/bin/nawk
 TOOLS_PLATFORM.sed?=            /usr/pkg/bin/nbsed
 # added by us to avoid possible Solaris tar incomparbilities with 
 "latest" gnutar stuff
 TOOLS_PLATFORM.tar?=            /usr/pkg/bin/bsdtar
 
 
 Perhaps something of this will find it's way into the documentation for 
 The settings for MACHINE_GNU_PLATFORM and SPARC_TARGET_ARCH should be 
 generated by the bootstrap process if ABI=64 is used. It is needed by 
 some packages in a "gcc only" setup too. And The evaluated defaults for 
 theese variables are simply wrong resulting in build errors in the packages.
 
 Best regards
 
 W. Stukenbrock
 
 Tim Zingelman wrote:
 
 > On Thu, Mar 24, 2011 at 6:00 AM, Wolfgang Stukenbrock
 > <Wolfgang.Stukenbrock%nagler-company.com@localhost> wrote:
 > 
 >>The following reply was made to PR pkg/44735; it has been noted by GNATS.
 >>
 >> I've "TOOLS_PLATFORM.sh?= /usr/pkg/bin/pdksh" in the
 >> /usr/pkg/etc/mk.conf too. It is placed there by the bootstrap process.
 >>
 >>
 > 
 > I guess I do not understand then how your libtool comes to contain
 > SHELL=/bin/sh and mine has the correct SHELL=/usr/pkg/bin/pdksh
 > 
 > 
 >> When I switch to gcc3 for compilation, I run into problems with libtool
 >> again, because libtool was build with sunstudio and there are some
 >> imcompartible options that are hardcoded into /usr/pkg/bin/libtool ...
 >> The main problem here is, that libtool has no support (till now) for
 >> more than one compiler setup. It would be realy great improvement if
 >> libtool would support different compilers in one installation depending
 >> on "whatever" option, compiler name analyses or environment setting.
 >>
 > 
 > I think this should be fixed in the compiler specific transforms found
 > in pkgsrc/mk/wrapper/* the idea being that based on the compiler (or
 > other tool) in use, all args are converted to match what is needed.  I
 > am aware that these are currently incomplete, but have not understood
 > the entire infrastructure sufficiently yet to propose required fixes.
 > 
 > 
 >> First -G does not work with gcc, so the following line is required to
 >> fix the option:
 >> WRAPPER_TRANSFORM_CMDS+= opt:-G:-shared
 >> There are some -G<num> options for some architectures in gcc, but I hope
 >> this does not hurt - at least for me it works for now.
 >>
 >> The next problem is that sunstudio requires CC to be called with -xar to
 >> build .a files from c++ sources. G++ never heard of this ...
 >> This is more problematic, but can be worked around be the following:
 >>
 > 
 > I'm not sure I follow the complex solution you suggest, but if the
 > only requirement is to remove the -xar argument, then
 > WRAPPER_TRANSFORM_CMDS+= rm:-xar would do that for you.
 > 
 > I'm not a make expert, so perhaps someone else could better answer the
 > other questions.
 > 
 
 


Home | Main Index | Thread Index | Old Index