pkgsrc sur opensolaris, 64 bits et sunstudio 12

Pkgsrc sur OpenSolaris, c’est bien, mais des packages compilés en 64 bits avec Sun Studio, c’est quand même la grosse classe. Et parmi eux pkgin, evidemment :)

Malheureusement, ce n’est pas une opération spécialement bien documentée, et surtout, elle nécessite une modification (en tout cas à ce jour) de mk/compilers/sunpro.mk.

J’utiliserai /opt comme base pour l’installation du framework car cela semble être l’usage pour tous les utilisateurs chevronnés du binôme Solaris/pkgsrc.

Je suppose dans le reste de ce post que la machine cible est 64 bits-capable et que le package sunstudio12u1 est installé via pkg.

Tout d’abord, on checkout pkgsrc de manière tout à fait classique :

imil@geonosis:/opt$ pfexec cvs -d anoncvs@anoncvs.fr.netbsd.org:/cvsroot co pkgsrc

On modifie ensuite le fichier mk/compilers/sunpro.mk, à partir de la ligne 88 :

# SunPro compiler must be passed certain flags to compile/link 64-bit code.
#.if !empty(CC_VERSION:M5.9) 
_COMPILER_ABI_FLAG.64= -m64
#.elif ${MACHINE_ARCH} == "sparc"
#_COMPILER_ABI_FLAG.64= -xtarget=ultra -xarch=v9
#.else
#_COMPILER_ABI_FLAG.64= -xarch=amd64
#.endif

Puis on bootstrap pkgsrc de cette façon :

imil@geonosis:/opt/pkgsrc/bootstrap$ CC=/opt/sunstudio12.1/bin/cc pfexec ./bootstrap --prefix=/opt/pkg --abi=64

Le fichier /opt/pkg/etc/mk.conf sera renseigné avec les valeurs qui ont servi à bootstraper pkgsrc.

On vérifie l’exactitude de l’opération simplement :


imil@geonosis:/opt/pkgsrc/bootstrap$ file /opt/pkg/bin/bmake
/opt/pkg/bin/bmake: ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, stripped

poh poh poh, ça claque ou bien.
[tags]OpenSolaris,pkgsrc[/tags]