blob: 9f9acd5a35b6a571f77436e9c9de9a3fffde3fb5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/squeak/squeak-3.4.1-r2.ebuild,v 1.1 2003/12/03 16:55:39 jhhudso Exp $
inherit libtool flag-o-matic eutils
strip-flags
filter-mfpmath sse
filter-flags "-fPIC" "-maltivec" "-mabi=altivec" "-fstack-protector" "-pipe" "-g" "-mtune" "-march" "-mcpu" "-O" "-O1" "-O2" "-Os" "-O3" "-freorder-blocks" "-fprefetch-loop-array" "-fforce-addr"
#Simply change these numbers for different versions
MV=3.4
NV=${MV}-1
FV=${MV}.1
DESCRIPTION="Highly-portable Smalltalk-80 implementation"
HOMEPAGE="http://www.squeak.org/"
SRC_URI="ftp://st.cs.uiuc.edu/Smalltalk/Squeak/${MV}/unix-linux/Squeak-${NV}.src.tar.gz"
LICENSE="Apple"
SLOT="0"
KEYWORDS="~x86"
IUSE="X oss mmx mozilla"
# a ffi flag would be nice
DEPEND="virtual/glibc
X? ( x11-base/xfree )"
RDEPEND="dev-lang/squeak-vm
virtual/glibc
X? ( x11-base/xfree )"
S="${WORKDIR}/Squeak-${NV}"
src_unpack() {
unpack ${A}
cd ${S}
epatch ${FILESDIR}/${P}-gcc33-string-fix.patch
}
src_compile() {
local myconf=""
use X || myconf="--without-x"
use oss && myconf="${myconf} --with-audio=oss"
use mmx && myconf="${myconf} --enable-mpg-mmx"
cd ${S}
mkdir build
cd build
../platforms/unix/config/configure \
--host=${CHOST} \
--prefix=/usr \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
${myconf} || die "configure failed"
mv Makefile Makefile.tmp.$$
cat Makefile.tmp.$$|sed \
's/$(prefix)\/doc\/squeak/$(prefix)\/share\/doc\/squeak-${FV}/g'\
> Makefile
rm -f Makefile.tmp.$$
emake || die
make npsqueak
# this is a bit paranoid, but we want to be sure it gets compiled now
cd nps
emake || die
}
src_install() {
cd ${S}/build
make DESTDIR=${D} ROOT=${D} install || die
exeinto /usr/bin
doexe inisqueak
### the rest is all for the plugin
cd nps
# plugin sample, must be served to work, file:// doesnt work.
insinto /usr/share/doc/squeak-${FV}
doins test/plugintest.html
doins test/plugintest.sts
# fix the paths
SQ_DIR=/usr/lib/squeak
VM_VERSION=${NV}
NPSQUEAK_SO=${SQ_DIR}/${VM_VERSION}/npsqueak.so
sed "s|@SQ_DIR@|${SQ_DIR}|;s|@VM_VERSION@|${VM_VERSION}|;s|@NPSQUEAK_SO@|${NPSQUEAK_SO}|" \
npsqueakrun.in > npsqueakrun.in.2
sed "s|@SQ_DIR@|${SQ_DIR}|;s|@VM_VERSION@|${VM_VERSION}|;s|@NPSQUEAK_SO@|${NPSQUEAK_SO}|" \
npsqueakregister.in > npsqueakregister
sed 's|^ensurefile|ensurefile "${HOME}/.npsqueak/SqueakPlugin.changes" "${SQ_DIR}/npsqueak.changes"\nensurefile|' npsqueakrun.in.2 > npsqueakrun
exeinto /usr/lib/squeak
doexe npsqueakregister
exeinto /usr/lib/squeak/${NV}
doexe npsqueakrun
# install in browsers (no opera use flags?)
dodir /opt/netscape/plugins
dosym /usr/lib/squeak/${NV}/npsqueak.so /opt/netscape/plugins
if [ "`use mozilla`" ] ; then
dodir /usr/lib/mozilla/plugins
dosym /opt/netscape/plugins/npsqueak.so \
/usr/lib/mozilla/plugins/npsqueak.so
fi
# maybe we should install the image here..
# dosym /usr/lib/squeak/SqueakV3.sources /usr/lib/squeak/${NV}/SqueakV3.sources
# doins npsqueak.image
# doins npsqueak.changes
}
pkg_postinst() {
einfo 'Run "inisqueak" to get a private copy of the VM image.'
einfo ''
einfo 'To setup the browser plugin, create a working set named npsqueak.* in /usr/lib/squeak/<version>/'
}
|