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++-5-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