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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-biology/staden/staden-1.5.3-r1.ebuild,v 1.3 2006/02/05 06:15:47 ribosome Exp $
inherit eutils toolchain-funcs fortran
TCLV="8.4.6"
TKV="8.4.6"
DESCRIPTION="The Staden Package - Biological sequence handling and analysis"
LICENSE="${PN}"
HOMEPAGE="http://staden.sourceforge.net"
SRC_URI="mirror://sourceforge/${PN}/${PN}-src-${PV//./-}.tar.gz
mirror://gentoo/${PN}-1.4.1-missing-doc.tar.bz2
mirror://sourceforge/tcl/tcl${TCLV}-src.tar.gz
mirror://sourceforge/tcl/tk${TKV}-src.tar.gz
doc? ( mirror://sourceforge/${PN}/course-1.1.tar.gz )"
SLOT="0"
IUSE="doc"
KEYWORDS="~amd64 x86"
RDEPEND="app-shells/ksh
dev-lang/tcl
dev-lang/tk
sci-libs/io_lib
=dev-tcltk/itcl-3.2*
dev-tcltk/iwidgets
media-libs/libpng
|| ( x11-libs/libX11 virtual/x11 )"
DEPEND="${RDEPEND}
dev-lang/perl
media-gfx/imagemagick
virtual/emacs
virtual/tetex"
S="${WORKDIR}/${PN}-src-${PV//./-}"
src_unpack() {
unpack ${A}
mv "${WORKDIR}"/tcl${TCLV} "${S}"/src
mv "${WORKDIR}"/tk${TKV} "${S}"/src
# The following Makefiles are more or less broken. Libraries are missing,
# or their directories are not included, or the variables are not set
# correctly and must be replaced by hardcoded library names. The
# top-level Makefile is also changed to avoid compiling documentation
# (which is provided prebuilt because of numerous compilation/dead links
# problems).
cd "${S}"
epatch "${FILESDIR}"/${P}-top.patch
epatch "${FILESDIR}"/${P}-text_utils.patch
epatch "${FILESDIR}"/${P}-tk_utils.patch
epatch "${FILESDIR}"/${P}-prefinish.patch
epatch "${FILESDIR}"/${P}-tracediff.patch
epatch "${FILESDIR}"/${P}-mutscan.patch
epatch "${FILESDIR}"/${P}-mutlib-gcc-3.4.patch
cd "${S}"/src/mk
# Remove the "-fpic" flag. This will be replaced by "-fPIC".
sed -i -e 's/SHLIB_CFLAGS = -fpic/SHLIB_CFLAGS = /' linux.mk || die
cd "${S}"
# "getopt" is incorrectly included as an extern (for Win32 compatibility).
epatch "${FILESDIR}"/${P}-getopt.patch
# The original iwidgetsrc crashes...
einfo 'Replacing broken iwidgetsrc'
cp "${FILESDIR}"/${P}-iwidgetsrc.new "${S}"/tables/iwidgetsrc
# Netscape is not a good default browser (security masked in Portage).
# Use documentation.html rather than staden_home.html as the top-level
# hypertext documentation file.
einfo 'Replacing old staden_help script.'
cp "${FILESDIR}"/${P}-staden_help.new "${S}"/src/scripts/staden_help
chmod +x "${S}"/src/scripts/staden_help
# The documentation building process is broken on Gentoo, mainly because
# incorrect program locations are assumed.
einfo "Patching Staden Package documentation build system."
# Documentation build process cannot find "update-nodes.el".
cd "${S}"/doc/manual/tools
sed -i -e 's%emacs -batch $1 -l ${DOCDIR:-.}/tools/update-nodes.el%emacs -batch $1 -l ${DOCDIR:-..}/manual/tools/update-nodes.el%' update-nodes || die
# Perl scripts search for "pearl" in "/usr/local".
for SCRIPT in *.pl texi2html; do
sed -i -e 's%/usr/local/bin/perl%/usr/bin/perl%' ${SCRIPT} || die
done
# The "convert" tool from Imagemagick is searched for in "/usr/X11R6".
sed -i -e 's%/usr/X11R6/bin/convert%/usr/bin/convert%' make_ps || die
# Solves issues with images in the exercise* texi files.
cd "${S}"/course/texi
for FILE in exercise*.texi; do
sed -i -e 's/,,8in}/,,8in,,eps}/' ${FILE}
sed -i -e 's/,6in}/,6in,,,eps}/' ${FILE}
done
# "CFLAGS" and "FFLAGS" need to be set to the user's values in the build
# system global Makefile. We also want only "-fPIC" shared libraries.
einfo "Applying user-defined compilation/linking flags:"
cd "${S}"/src/mk
sed -e "s/COPT = -O2 -g3 -DNDEBUG/COPT = ${CFLAGS:-"-O2 -g3 -DNDEBUG"} -fPIC/" \
-e "s/FOPT = -O2 -g3 -DNDEBUG/FOPT = ${FFLAGS:-"-O2 -g3 -DNDEBUG"} -fPIC/" \
-i global.mk || die
}
src_compile() {
# "MACHINE", "{STADEN,SRC}ROOT" and "JOB" are mandatory arguments to the
# Staden Package build process. "O" is redefined on the command line to
# avoid a conflict between Portage and the Staden Package build system,
# which both use this variable. (In Portage, its value is the directory
# containing the current ebuild, while in the Staden Package build system
# it is set to the directory containing the compiler object files.)
# Compiler program names also need to be specified to override the
# incorrect hardcoded ones.
# Compile executables and libraries.
make \
STADENROOT="${S}" \
SRCROOT="${S}/src" \
MACHINE="linux" \
JOB="all" \
O="linux-binaries" \
CC=$(tc-getCC) \
CXX=$(tc-getCXX) \
F77=${F77:-g77} \
|| die "Package compilation failed."
# Build documentation.
cd "${S}"/doc
make \
STADENROOT="${S}" \
SRCROOT="${S}/src" \
MACHINE="linux" \
JOB="all" \
O="linux-binaries" \
CC=$(tc-getCC) \
CXX=$(tc-getCXX) \
F77=${F77:-g77} \
|| die "Package compilation failed."
# The install process will copy the libraries in ${S}/lib/linux-binaries,
# but this directory is in fact a symlink to the source directory.
rm "${S}"/lib/linux-binaries
mkdir "${S}"/lib/linux-binaries
# Moves executables in "${S}/linux-bin" and libraries to
# ${S}/lib/linux-binaries.
cd "${S}"
make \
STADENROOT="${S}" \
SRCROOT="${S}/src" \
MACHINE="linux" \
JOB="all" \
O="linux-binaries" \
install || die "Package pre-installation failed."
# Remove Makefiles from directories which will be manually installed.
rm "${S}"/lib/Makefile
rm "${S}"/demo/Makefile
rm "${S}"/tables/Makefile
rm "${S}"/userdata/Makefile
#Remove libread since an updated version is included in "sci-libs/io_lib".
rm "${S}"/lib/linux-binaries/libread.so
# Delete the binaries already included in "sci-libs/io_lib".
for FILE in convert_trace \
extract_seq \
get_comment \
index_tar \
makeSCF \
scf_{dump,info,update} \
trace_dump; do
rm "${S}"/linux-bin/${FILE}
done
# These won't be found if they are not symlinked in the lib dir.
ln -s /usr/$(get_libdir)/libitcl3.2.so "${S}"/lib/itcl3.3/libitcl3.3.so
ln -s /usr/$(get_libdir)/libitk3.2.so "${S}"/lib/itk3.3/libitk3.3.so
# Remove the (broken) prebuilt EMBOSS tcl/tk GUIs.
rm "${S}"/tables/emboss_menu
rm -r "${S}"/lib/spin2_emboss/acdtcl
rm -r "${S}"/lib/spin_emboss/acdtcl
# Patch hypertext documentation.
cd "${S}"/doc/manual
for FILE in *.html; do
sed -i -e 's%<a href="../staden_home.html"><img src="i/nav_home.gif" alt="home"></a>%%' ${FILE}
done
cd "${S}"/doc/scripting_manual
for FILE in *.html; do
sed -i -e 's%<a href="../staden_home.html"><img src="i/nav_home.gif" alt="home"></a>%%' ${FILE}
done
}
src_install() {
# Executables and libraries
mkdir -p "${D}"/opt/${PN}
for FILE in "${S}"/lib/linux-binaries/*; do
dolib ${FILE}
done
mv "${S}"/linux-bin "${D}"/opt/${PN}/linux-bin
mv "${S}"/lib "${D}"/opt/${PN}/lib
# Shared files
mv "${S}"/demo "${D}"/opt/${PN}
mv "${S}"/tables "${D}"/opt/${PN}
mv "${S}"/userdata "${D}"/opt/${PN}
# "env" file for setting paths to Staden Package root, libraries, tables...
insinto /etc/env.d
newins "${FILESDIR}"/${P}-env 27${PN}
# Basic documentation
insinto /opt/${PN}/doc
doins "${S}"/doc/Acknowledgements
newins "${S}"/doc/emboss.txt README.emboss
# Man pages
doman "${S}"/doc/manual/man/man*/*.*
# Hypertext documentation
insinto /opt/${PN}/doc/manual
doins "${S}"/doc/manual/*unix*.{png,html,index}
insinto /opt/${PN}/doc/scripting_manual
doins "${S}"/doc/scripting_manual/*.html
insinto /opt/${PN}/doc/manual/i
doins "${S}"/doc/manual/i/*
insinto /opt/${PN}/doc/scripting_manual/i
doins "${S}"/doc/scripting_manual/i/*
# Missing hypertext documentation
insinto /opt/${PN}/doc
doins "${WORKDIR}"/${PN}-1.4.1-missing-doc/documentation.html
insinto /opt/${PN}/doc/misc
doins "${WORKDIR}"/${PN}-1.4.1-missing-doc/misc/*
insinto /opt/${PN}/doc/misc/i
doins "${S}"/doc/manual/i/*
# Printable manuals and articles
insinto /opt/${PN}/doc
newins "${S}"/doc/gkb547_gml.pdf Staden1998.pdf
newins "${S}"/doc/manual/manual_unix.pdf manual.pdf
newins "${S}"/doc/manual/mini_unix.pdf mini_manual.pdf
newins "${S}"/doc/scripting_manual/scripting.pdf scripting_manual.pdf
# A short course in printable format, along with example data
if use doc; then
mkdir -p "${D}"/opt/${PN}/course
mv "${WORKDIR}"/course-1.1/data "${D}"/opt/${PN}/course/data
insinto /opt/${PN}/course
doins "${WORKDIR}"/course-1.1/README
newins "${WORKDIR}"/course-1.1/unix_docs/mutation_talk.ppt course_mutation_detection_diapos.pdf
newins "${WORKDIR}"/course-1.1/unix_docs/course_unix.pdf course_project_management.pdf
newins "${WORKDIR}"/course-1.1/unix_docs/mutation_notes.pdf course_mutation_detection.pdf
fi
}
pkg_postinst() {
echo
ewarn 'Known issues:'
ewarn
ewarn 'The help browser integrated in the GUI applications reports missing'
ewarn 'files when following hyperlinks on the main documentation page. This'
ewarn 'seems to be a problem in the Staden Package help browser. You might'
ewarn 'want to use your favorite browser instead of the integrated one to'
ewarn 'read the documentation.'
ewarn
ewarn 'The GUI programs may crash when bringing up the font selection'
ewarn 'dialog. This problem is related to the presence of certain'
ewarn 'fonts in "FontPath". If you experience this problem, try using'
ewarn '"strace" to identify the problematic font(s) and either uninstall'
ewarn 'them or remove the directory they are in from "FontPath" by'
ewarn 'editing your X server configuration file.'
echo
}
|