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

AltStyle によって変換されたページ (->オリジナル) /