1 #! /usr/bin/sh 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License (the "License"). 7 # You may not use this file except in compliance with the License. 8 # 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 # or http://www.opensolaris.org/os/licensing. 11 # See the License for the specific language governing permissions 12 # and limitations under the License. 13 # 14 # When distributing Covered Code, include this CDDL HEADER in each 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 # If applicable, add the following below this CDDL HEADER, with the 17 # fields enclosed by brackets "[]" replaced with your own identifying 18 # information: Portions Copyright [yyyy] [name of copyright owner] 19 # 20 # CDDL HEADER END 21 # 22 23 # 24 # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25 # Use is subject to license terms. 26 # 27 28 # 29 #ident "@(#)install-sfw 1.21 09/06/04 SMI" 30 # 31 32 # 33 # XXX - clean this up at some point 34 35 . ${SRC}/tools/install.subr 36 37 # The gcc makefiles install the stuff for us. We just need to clean 38 # up the permissions, etc. 39 40 SOL_REV=`uname -r | sed "s,^5\.,2\.,"` 41 42 if [ "$MACH" = "sparc" ]; then 43 MACHNAME=sparc-sun-solaris${SOL_REV} 44 else 45 MACHNAME=i386-pc-solaris${SOL_REV} 46 fi 47 48 GCCVER=3.4.3 # for easy updating 49 50 # First, nuke the "fixincludes" headers that gcc installs. 51 # We need to create these on the install machine at 52 # package install time. 53 # Except any files part of gcc, like the objc 54 # include files. This could be automated but the list is 55 # probably fairly static and smaller than the code to cleanup 56 # what fixincludes might do. 57 # 58 # note gcc has its own stddef.h but when fixincludes is 59 # run by pkgadd the system one replaces it (something 60 # about wchar_t) so we don't ship that one for now. 61 62 ls -d ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/include/* \ 63 | grep -v objc \ 64 | grep -v stdarg.h \ 65 | grep -v unwind.h \ 66 | grep -v emmintrin.h \ 67 | grep -v pmmintrin.h \ 68 | grep -v mmintrin.h \ 69 | grep -v iso646.h \ 70 | grep -v xmmintrin.h \ 71 | grep -v stdbool.h \ 72 | grep -v float.h \ 73 | xargs rm -rf 74 75 # Nothing pretty here - just a brute-force changing of 76 # all the perms. First the non-architecture-specific 77 # pieces, then the architecture=specific stuff. 78 79 80 # directories 81 chmod 755 ${ROOT}/usr/sfw/include/c++ 82 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER} 83 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/backward 84 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/bits 85 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/debug 86 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/ext 87 chmod 755 ${ROOT}/usr/sfw/lib/gcc 88 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/include/objc 89 chmod 755 ${ROOT}/usr/sfw/libexec/gcc 90 91 # files 92 93 for i in \ 94 gcc.info \ 95 cpp.info \ 96 gccint.info \ 97 gccinstall.info \ 98 g77.info \ 99 cppinternals.info 100 do 101 /usr/sfw/bin/install-info --dir-file=${ROOT}/usr/sfw/share/info/dir \ 102 ${ROOT}/usr/sfw/share/info/${i} 103 done 104 105 chmod 444 ${ROOT}/usr/sfw/share/info/gcc.info 106 chmod 444 ${ROOT}/usr/sfw/share/info/cpp.info 107 chmod 444 ${ROOT}/usr/sfw/share/info/gccint.info 108 chmod 444 ${ROOT}/usr/sfw/share/info/gccinstall.info 109 chmod 444 ${ROOT}/usr/sfw/share/info/cppinternals.info 110 chmod 444 ${ROOT}/usr/sfw/share/info/g77.info 111 112 chmod 555 ${ROOT}/usr/sfw/bin/gccbug 113 114 for i in \ 115 c++ \ 116 cpp \ 117 g++ \ 118 gcc \ 119 g77 \ 120 gcov 121 do 122 chmod 755 ${ROOT}/usr/sfw/bin/${i} 123 ${SRC}/tools/post_process ${ROOT}/usr/sfw/bin/${i} 124 chmod 555 ${ROOT}/usr/sfw/bin/${i} 125 done 126 127 find ${ROOT}/usr/sfw/include/c++/${GCCVER} -type d -exec chmod 755 {} \; 128 find ${ROOT}/usr/sfw/include/c++/${GCCVER} -type f -exec chmod 444 {} \; 129 find ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/include -type f -exec chmod 444 {} \; 130 131 for i in libgcc_s.so.1 libstdc++.so.6.0.3 libg2c.so.0.0.0 libobjc.so.1.0.0 132 do 133 chmod 755 ${ROOT}/usr/sfw/lib/${i} 134 ${SRC}/tools/post_process_so ${ROOT}/usr/sfw/lib/${i} 135 chmod 555 ${ROOT}/usr/sfw/lib/${i} 136 done 137 138 chmod 555 ${ROOT}/usr/sfw/lib/libiberty.a 139 chmod 444 ${ROOT}/usr/sfw/lib/libstdc++.a 140 chmod 555 ${ROOT}/usr/sfw/lib/libg2c.a 141 chmod 555 ${ROOT}/usr/sfw/lib/libobjc.a 142 chmod 555 ${ROOT}/usr/sfw/lib/libobjc.la 143 chmod 555 ${ROOT}/usr/sfw/lib/libfrtbegin.a 144 chmod 555 ${ROOT}/usr/sfw/lib/libg2c.la 145 146 rm -f /tmp/sed$$ 147 echo "/^dependency_libs/c\\ 148 dependency_libs=' -L/usr/sfw/lib -lgcc_s -lm'" >/tmp/sed$$ 149 150 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/libstdc++.la > ${ROOT}/usr/sfw/lib/libstdc++.la.1 151 mv ${ROOT}/usr/sfw/lib/libstdc++.la.1 ${ROOT}/usr/sfw/lib/libstdc++.la 152 chmod 555 ${ROOT}/usr/sfw/lib/libstdc++.la 153 154 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/libsupc++.la > ${ROOT}/usr/sfw/lib/libsupc++.la.1 155 mv ${ROOT}/usr/sfw/lib/libsupc++.la.1 ${ROOT}/usr/sfw/lib/libsupc++.la 156 chmod 555 ${ROOT}/usr/sfw/lib/libsupc++.la 157 158 rm -f /tmp/sed$$ 159 160 chmod 555 ${ROOT}/usr/sfw/lib/libsupc++.a 161 162 MANSCRIPT=sunman-stability 163 164 for i in \ 165 cpp.1 \ 166 g++.1 \ 167 gcc.1 \ 168 g77.1 \ 169 gcov.1 170 do 171 _install M ${i}.sunman ${ROOT}/usr/sfw/share/man/man1/${i} 444 172 done 173 174 for i in \ 175 fsf-funding.7 \ 176 gfdl.7 \ 177 gpl.7 178 do 179 _install M ${i}.sunman ${ROOT}/usr/sfw/share/man/man7/${i} 444 180 done 181 182 # arch-specific 183 184 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/${MACHNAME} 185 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/${MACHNAME}/bits 186 chmod 755 ${ROOT}/usr/sfw/include/c++/${GCCVER}/${MACHNAME}/bits/stdc++.h.gch 187 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME} 188 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER} 189 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools 190 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include 191 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/include 192 chmod 755 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME} 193 chmod 755 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER} 194 chmod 755 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/install-tools 195 196 for i in \ 197 ${MACHNAME}-c++ \ 198 ${MACHNAME}-g++ \ 199 ${MACHNAME}-gcc \ 200 ${MACHNAME}-gcc-${GCCVER} 201 do 202 chmod 755 ${ROOT}/usr/sfw/bin/${i} 203 ${SRC}/tools/post_process ${ROOT}/usr/sfw/bin/${i} 204 chmod 555 ${ROOT}/usr/sfw/bin/${i} 205 done 206 207 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crtbegin.o 208 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crtend.o 209 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/gmon.o 210 211 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/gsyslimits.h 212 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/README 213 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/float.h 214 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/iso646.h 215 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/limits.h 216 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/stdarg.h 217 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/stdbool.h 218 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/stddef.h 219 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/unwind.h 220 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/varargs.h 221 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/mkheaders.conf 222 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/libgcc.a 223 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/libgcc_eh.a 224 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/libgcov.a 225 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/specs 226 227 for i in \ 228 cc1 \ 229 cc1obj \ 230 cc1plus \ 231 f771 \ 232 collect2 233 do 234 chmod 755 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/${i} 235 ${SRC}/tools/post_process ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/${i} 236 chmod 555 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/${i} 237 done 238 239 240 for script in \ 241 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/install-tools/fixinc.sh \ 242 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/install-tools/mkheaders 243 do 244 rm -f ${script}.orig 245 mv ${script} ${script}.orig 246 sed \ 247 -e s,'^#!/bin/sh','#!/bin/ksh', \ 248 < ${script}.orig \ 249 > ${script} 250 rm -f ${script}.orig 251 chmod 555 ${script} 252 done 253 254 chmod 555 ${ROOT}/usr/sfw/libexec/gcc/${MACHNAME}/${GCCVER}/install-tools/fixincl 255 256 if [ "$MACH" = "sparc" ]; then 257 chmod 755 ${ROOT}/usr/sfw/lib/sparcv9 258 rm -f ${ROOT}/usr/sfw/libexec/gcc/sparc-sun-solaris${SOL_REV}/${GCCVER}/as 259 ln -s ../../../../../gnu/sparc-sun-solaris${SOL_REV}/bin/as ${ROOT}/usr/sfw/libexec/gcc/sparc-sun-solaris${SOL_REV}/${GCCVER}/as 260 rm -f ${ROOT}/usr/sfw/lib/sparcv9/libgcc_s.so 261 ln -s libgcc_s.so.1 ${ROOT}/usr/sfw/lib/sparcv9/libgcc_s.so 262 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libgcc_s.so.1 263 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libiberty.a 264 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.a 265 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libg2c.a 266 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libfrtbegin.a 267 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libg2c.la 268 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libobjc.a 269 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libobjc.la 270 271 rm -f /tmp/sed$$ 272 echo "/^dependency_libs/c\\ 273 dependency_libs=' -L/usr/sfw/lib/sparcv9 -lgcc_s -lm'" >/tmp/sed$$ 274 275 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.la > ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.la.1 276 mv ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.la.1 ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.la 277 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.la 278 279 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.la > ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.la.1 280 mv ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.la.1 ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.la 281 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.la 282 rm -f /tmp/sed$$ 283 284 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libstdc++.so.6.0.3 285 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libsupc++.a 286 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libg2c.so.0.0.0 287 chmod 555 ${ROOT}/usr/sfw/lib/sparcv9/libobjc.so.1.0.0 288 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9 289 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crt1.o 290 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crti.o 291 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crtn.o 292 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/gcrt1.o 293 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crt1.o 294 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/crtfastmath.o 295 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crti.o 296 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crtn.o 297 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/gcrt1.o 298 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crtfastmath.o 299 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crtbegin.o 300 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/crtend.o 301 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/gmon.o 302 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/libgcc.a 303 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/libgcc_eh.a 304 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/sparcv9/libgcov.a 305 else 306 chmod 755 ${ROOT}/usr/sfw/lib/amd64 307 rm -f ${ROOT}/usr/sfw/libexec/gcc/i386-pc-solaris${SOL_REV}/${GCCVER}/as 308 ln -s ../../../../../gnu/i386-pc-solaris${SOL_REV}/bin/as ${ROOT}/usr/sfw/libexec/gcc/i386-pc-solaris${SOL_REV}/${GCCVER}/as 309 rm -f ${ROOT}/usr/sfw/lib/amd64/libgcc_s.so 310 ln -s libgcc_s.so.1 ${ROOT}/usr/sfw/lib/amd64/libgcc_s.so 311 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libgcc_s.so.1 312 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libiberty.a 313 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libstdc++.a 314 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libg2c.a 315 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libg2c.la 316 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libobjc.a 317 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libobjc.la 318 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libfrtbegin.a 319 320 rm -f /tmp/sed$$ 321 echo "/^dependency_libs/c\\ 322 dependency_libs=' -L/usr/sfw/lib/amd64 -lgcc_s -lm'" >/tmp/sed$$ 323 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/amd64/libstdc++.la > ${ROOT}/usr/sfw/lib/amd64/libstdc++.la.1 324 mv ${ROOT}/usr/sfw/lib/amd64/libstdc++.la.1 ${ROOT}/usr/sfw/lib/amd64/libstdc++.la 325 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libstdc++.la 326 sed -f /tmp/sed$$ ${ROOT}/usr/sfw/lib/amd64/libsupc++.la >${ROOT}/usr/sfw/lib/amd64/libsupc++.la.1 327 328 mv ${ROOT}/usr/sfw/lib/amd64/libsupc++.la.1 ${ROOT}/usr/sfw/lib/amd64/libsupc++.la 329 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libsupc++.la 330 rm -f /tmp/sed$$ 331 332 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libstdc++.so.6.0.3 333 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libg2c.so.0.0.0 334 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libobjc.so.1.0.0 335 chmod 555 ${ROOT}/usr/sfw/lib/amd64/libsupc++.a 336 chmod 755 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64 337 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/crtbegin.o 338 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/crtend.o 339 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/gmon.o 340 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/libgcc.a 341 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/libgcc_eh.a 342 chmod 555 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/amd64/libgcov.a 343 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/emmintrin.h 344 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/mmintrin.h 345 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/pmmintrin.h 346 chmod 444 ${ROOT}/usr/sfw/lib/gcc/${MACHNAME}/${GCCVER}/install-tools/include/xmmintrin.h 347 fi 348 349 exit 0 350