tech-pkg archive

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

Sunpro bootstrapping issue



I've installed a Sparc IIIi machine with Solaris 10 and the current SunPro 
compilers.
The latter are installed in /opt/sunstudio12.1 and also symlinked to /usr/bin, 
which are the standard settings with the installer.
Now when I bootstrap with that setup using --abi=64, it fails very much like 
reported in pkg/42240.

mk/compiler/sunpro.mk

has


SUNWSPROBASE?=          /opt/SUNWspro
...
_COMPILER_NAME.c=       cc
...


and then only if ${SUNWSPROBASE}/bin/cc exists it will set CPATH to 
${SUNWSPROBASE}/bin/cc


further below we have

.if exists(${CCPATH})
CC_VERSION_STRING!=     ${CCPATH} -V 2>&1 || ${TRUE}
CC_VERSION!=            ${CCPATH} -V 2>&1 | ${GREP} '^cc'
.else
CC_VERSION_STRING?=     ${CC_VERSION}
CC_VERSION?=            cc: Sun C
.endif

this means in my case I end up having CC_VERSION default to "cc: Sun C"
And so a bit further down 

.if !empty(CC_VERSION:M5.9) || !empty(CC_VERSION:M5.1[0-9])

does not match and I do erroneously end up with

_COMPILER_ABI_FLAG.64=  -xtarget=ultra -xarch=v9


simply because pkgsrc tries to evaluate the full path of the compiler and, 
during bootstrapping, mandates that it is to be found in /opt/SUNWspro

Now what's the correct way to fix that? It seems like pkgsrc is intensionally 
using fixed default paths for compilers. Staying in line with that philosophy, 
something like

.for _p in /opt/SUNWspro /opt/sunstudio12.1
.  if exists(${_p}/bin/cc)
SUNWSPROBASE?=          ${_p}
.  endif
.endfor

should do.
What do you think?



-- 
Georg Schwarz  http://home.pages.de/~schwarz/
georg.schwarz%freenet.de@localhost +49 170 8768585







Home | Main Index | Thread Index | Old Index