1 #!/usr/bin/bash
   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, Version 1.0 only
   7 # (the "License").  You may not use this file except in compliance
   8 # with the License.
   9 #
  10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  11 # or http://www.opensolaris.org/os/licensing.
  12 # See the License for the specific language governing permissions
  13 # and limitations under the License.
  14 #
  15 # When distributing Covered Code, include this CDDL HEADER in each
  16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  17 # If applicable, add the following below this CDDL HEADER, with the
  18 # fields enclosed by brackets "[]" replaced with your own identifying
  19 # information: Portions Copyright [yyyy] [name of copyright owner]
  20 #
  21 # CDDL HEADER END
  22 #
  23 #
  24 # Copyright 2011-2012 OmniTI Computer Consulting, Inc.  All rights reserved.
  25 # Use is subject to license terms.
  26 #
  27 # We need this for the Sun assembler
  28 LANG=C
  29 export LANG
  30 SHELL=/usr/bin/bash
  31 export SHELL
  32 
  33 # Load support functions
  34 . ../../lib/functions.sh
  35 
  36 case $DEPVER in
  37     "")
  38         DEPVER=5.16.1
  39         logmsg "no version specified, using $DEPVER"
  40         ;;
  41 esac
  42 
  43 PROG=perl
  44 VER=$DEPVER
  45 NODOTVER=$(echo $DEPVER| sed -e's/\.//g;')
  46 PKG=runtime/perl-$NODOTVER
  47 SUMMARY="Perl $VER Programming Language"
  48 DESC="$SUMMARY"
  49 PREFIX=/usr/perl5/${VER}
  50 
  51 BUILD_DEPENDS_IPS="text/gnu-sed"
  52 
  53 if [[ $VER == "5.8.8" ]]; then
  54     PATCHDIR="patches-5.8.8"
  55 fi
  56 
  57 catalog() {
  58     pushd $DESTDIR > /dev/null
  59     find . | cut -c3- > $TMPDIR/$1
  60     popd > /dev/null
  61 }
  62 build_mogs() {
  63     pushd $TMPDIR/$BUILDDIR > /dev/null
  64     ./miniperl $SRCDIR/make_mog.pl $TMPDIR $DESTDIR
  65     cat $TMPDIR/nodocs.mog $TMPDIR/no64.mog > $TMPDIR/perl.mog
  66     cat $TMPDIR/no32.mog $TMPDIR/no64.mog > $TMPDIR/perl-docs.mog
  67     cat $TMPDIR/no32.mog $TMPDIR/nodocs.mog > $TMPDIR/perl-64.mog
  68     popd > /dev/null
  69 }
  70 links() {
  71     mkdir -p $DESTDIR/usr/bin
  72     for firstclass in perl perldoc cpan
  73     do
  74         ln -s ../perl5/${VER}/bin/$firstclass $DESTDIR/usr/bin/$firstclass
  75     done
  76     mkdir -p $DESTDIR/usr/perl5/bin
  77     ln -s ../${VER}/bin/perl $DESTDIR/usr/perl5/bin/perl
  78 }
  79 
  80 build32() {
  81     pushd $TMPDIR/$BUILDDIR > /dev/null
  82     logmsg "Building 32-bit"
  83     logmsg "--- make (dist)clean"
  84     logcmd make distclean || \
  85         logmsg "--- *** WARNING *** make (dist)clean Failed"
  86     logmsg "--- configure (32-bit)"
  87     logcmd $SHELL Configure -Dusethreads -Duseshrplib -Dusemultiplicity -Duselargefiles \
  88         -Duse64bitint -Dmyhostname="localhost" \
  89         -Dcc=gcc -Dld=/usr/ccs/bin/ld -Dccflags="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO" \
  90         -Doptimize="-O3" \
  91         -Dvendorprefix=${PREFIX} -Dprefix=${PREFIX} \
  92         -Dbin=${PREFIX}/bin/$ISAPART \
  93         -Dsitebin=${PREFIX}/bin/$ISAPART \
  94         -Dvendorbin=${PREFIX}/bin/$ISAPART \
  95         -Dscriptdir=${PREFIX}/bin \
  96         -Dsitescript=${PREFIX}/bin \
  97         -Dvendorscript=${PREFIX}/bin \
  98         -Dprivlib=${PREFIX}/lib \
  99         -Dsitelib=/usr/perl5/site_perl/${VER} \
 100         -Dvendorlib=/usr/perl5/vendor_perl/${VER} \
 101         -des || \
 102     logerr "--- Configure failed"
 103     gsed -i 's/-fstack-protector//g;' config.sh
 104     logmsg "--- make"
 105     logcmd gmake -j 8 || \
 106     logcmd gmake || \
 107         logerr "--- Make failed"
 108     #logmsg "--- make test"
 109     #logcmd gmake test || \
 110     #    logerr "--- Make test failed"
 111     logmsg "--- make install"
 112     logcmd gmake install DESTDIR=${DESTDIR} || \
 113         logerr "--- Make install failed"
 114     # We make the isastubs after 32bit so we can seem them in the catalog
 115     make_isa_stub
 116 
 117     catalog perl.32.bit || logerr "Failed to catalog 32bit install"
 118     popd > /dev/null
 119 }
 120 
 121 build64() {
 122     pushd $TMPDIR/$BUILDDIR > /dev/null
 123     logmsg "Building 64-bit"
 124     logmsg "--- make (dist)clean"
 125     logcmd make distclean || \
 126         logmsg "--- *** WARNING *** make (dist)clean Failed"
 127     logmsg "--- configure (64-bit)"
 128     logcmd $SHELL Configure -Dusethreads -Duseshrplib -Dusemultiplicity -Duselargefiles \
 129         -Duse64bitint -Dmyhostname="localhost" \
 130         -Dcc=gcc -Dld=/usr/ccs/bin/ld -Dccflags="-D_LARGEFILE64_SOURCE -m64 -D_TS_ERRNO" \
 131         -Dlddlflags="-G -64" \
 132         -Dldflags="" \
 133         -Doptimize="-O3" \
 134         -Dvendorprefix=${PREFIX} -Dprefix=${PREFIX} \
 135         -Dbin=${PREFIX}/bin/$ISAPART64 \
 136         -Dsitebin=${PREFIX}/bin/$ISAPART64 \
 137         -Dvendorbin=${PREFIX}/bin/$ISAPART64 \
 138         -Dscriptdir=${PREFIX}/bin \
 139         -Dsitescript=${PREFIX}/bin \
 140         -Dvendorscript=${PREFIX}/bin \
 141         -Dprivlib=${PREFIX}/lib \
 142         -Dsitelib=/usr/perl5/site_perl/${VER} \
 143         -Dvendorlib=/usr/perl5/vendor_perl/${VER} \
 144         -des || \
 145     logerr "--- Configure failed"
 146     gsed -i 's/-fstack-protector//g;' config.sh
 147     gsed -i -e '/^lddlflags/{s/-G -m64//;}' config.sh
 148     logmsg "--- make"
 149     logcmd gmake -j 8 || \
 150     logcmd gmake || \
 151         logerr "--- Make failed"
 152     #logmsg "--- make test"
 153     #logcmd gmake test || \
 154     #    logerr "--- Make test failed"
 155     logmsg "--- make install"
 156     logcmd gmake install DESTDIR=${DESTDIR} || \
 157         logerr "--- Make install failed"
 158 
 159     pushd $DESTDIR/$PREFIX/bin > /dev/null
 160     gsed -i 's:usr/perl5/5.16.1/bin/amd64:usr/perl5/5.16.1/bin:g' \
 161         `find . -type f | xargs file | grep script | cut -f1 -d:`
 162     popd > /dev/null
 163     popd > /dev/null
 164 }
 165 
 166 init
 167 download_source $PROG $PROG $VER
 168 patch_source
 169 prep_build
 170 links
 171 build
 172 catalog perl.all.bit || logerr "Failed to catalog full install"
 173 build_mogs
 174 
 175 PKG=runtime/perl
 176 SUMMARY="Perl $VER Programming Language"
 177 DESC="$SUMMARY"
 178 DEPENDS_IPS="system/library/g++-4-runtime system/library/math system/library"
 179 make_package $TMPDIR/perl.mog
 180 
 181 PKG=runtime/perl/manual
 182 SUMMARY="Perl $VER Programming Language Docs"
 183 DESC="$SUMMARY"
 184 DEPENDS_IPS="=runtime/perl@${VER},5.11-${PVER} runtime/perl@${VER},5.11-${PVER}"
 185 make_package $TMPDIR/perl-docs.mog
 186 
 187 PKG=runtime/perl-64
 188 SUMMARY="Perl $VER Programming Language (64-bit)"
 189 DESC="$SUMMARY"
 190 DEPENDS_IPS="=runtime/perl@${VER},5.11-${PVER} runtime/perl@${VER},5.11-${PVER}"
 191 make_package $TMPDIR/perl-64.mog
 192 
 193 clean_up