summaryrefslogtreecommitdiff
blob: e1f70c6181b63d8f52035a64b6e07e9b0239e802 (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
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
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-sci/staden/staden-1.4.1-r4.ebuild,v 1.1 2004/09/16 23:13:26 ribosome Exp $

inherit eutils

DESCRIPTION="The Staden Package - Biological sequence handling and analysis"
HOMEPAGE="http://${PN}.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${PN}-src-rel-${PV//./-}.tar.gz
	mirror://gentoo/${P}-doc.tar.bz2
	doc? mirror://gentoo/${P}-course.tar.bz2"
LICENSE="${PN}"

SLOT="0"
KEYWORDS="~x86"
IUSE="doc emboss ifc"

DEPEND="${RDEPEND}
	dev-lang/perl
	ifc? ( dev-lang/ifc )"

RDEPEND="app-shells/ksh
	dev-lang/tcl
	dev-lang/tk
	=dev-tcltk/itcl-3.2*
	dev-tcltk/iwidgets
	media-libs/libpng
	virtual/x11"

PDEPEND="emboss? ( app-sci/staden-emboss )"

S=${WORKDIR}/${PN}-src-rel-${PV//./-}

pkg_setup() {
	# Check for a Fortran compiler.
	if ! which ${F77:-g77} &> /dev/null; then
		echo
		eerror "The Fortran compiler \"${F77:-g77}\" could not be found on your system."
		if [ -z ${F77} ] || [ ${F77} = g77 ]; then
			eerror 'Please reinstall "sys-devel/gcc" with the "f77" "USE" flag enabled.'
		elif [ ${F77} = ifc ] && ! use ifc &> /dev/null; then
			eerror 'Please set the "ifc" "USE" flag if you want to use the Intel Fortran'
			eerror 'Compiler to build this package. This will ensure the "dev-lang/ifc"'
			eerror 'package gets installed on your system.'
		elif [ ${F77} = ifc ] && use ifc &> /dev/null; then
			eerror 'Please ensure "ifc" is in a directory referenced in "PATH".'
		else
			eerror 'Please make sure the variable ${F77} is set to the name of a valid'
			eerror 'Fortran compiler installed on your system. Make sure this executable'
			eerror 'is in a directory referenced by "PATH", and that the corresponding'
			eerror '"USE" flag is set if applicable (for example "ifc" if you use the'
			eerror 'Intel Fortran Compiler).'
		fi
		die "Fortran compiler not found."
	fi
}

src_unpack() {
	unpack ${A}

	# 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}
	einfo "Patching Staden Package Makefiles:"
	epatch ${FILESDIR}/${P}-top.patch
	epatch ${FILESDIR}/${P}-gap4.patch
	epatch ${FILESDIR}/${P}-mutscan.patch
	epatch ${FILESDIR}/${P}-prefinish.patch
	epatch ${FILESDIR}/${P}-tk_utils.patch
	epatch ${FILESDIR}/${P}-tracediff.patch
	echo

	# "getopt" is incorrectly included as an extern (for Win32 compatibility).
	einfo "Patching Staden Package code:"
	epatch ${FILESDIR}/${P}-getopt.patch
	echo

	# "CFLAGS" and "FFLAGS" need to be set to the user's values in the build
	# system global Makefile.
	einfo "Applying user-defined compilation/linking flags:"
	cd ${S}/src/mk
	sed -i -e "s/COPT		= -O2 -g3 -DNDEBUG/COPT = ${CFLAGS:-"-O2 -g3 -DNDEBUG"}/" global.mk \
		&& einfo "Successfully applied sed script to set CFLAGS." \
		|| eerror "Failed to apply sed script to set CFLAGS."
	sed -i -e "s/FOPT		= -O2 -g3 -DNDEBUG/FOPT = ${FFLAGS:-"-O2 -g3 -DNDEBUG"}/" global.mk \
		&& einfo "Successfully applied sed script to set FFLAGS." \
		|| eerror "Failed to apply sed script to set FFLAGS."
}

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.

	# Compiles executables and libraries.
	make \
		STADENROOT="${S}" \
		SRCROOT="${S}/src" \
		MACHINE="linux" \
		JOB="all" \
		O="linux-binaries" \
		CC=${CC:-gcc} \
		CXX=${CXX:-g++} \
		F77=${F77:-g77} \
		|| die "Package compilation failed."

	# Moves executables in "${S}/linux-bin" and libraries to ${S}/lib.
	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 trashed "linux-binaries" file and replace it by a directory
	# containing the appropriate libraries.
	rm ${S}/lib/linux-binaries
	mkdir ${S}/lib/linux-binaries
	mv ${S}/src/lib/linux-binaries/* ${S}/lib/linux-binaries

	ln -s /usr/lib/libitcl3.2.so ${S}/lib/itcl3.3/libitcl3.3.so
	ln -s /usr/lib/libitk3.2.so ${S}/lib/itk3.3/libitk3.3.so

	cp ${FILESDIR}/${P}-iwidgetsrc.new ${S}/tables/iwidgetsrc

	epatch ${FILESDIR}/${P}-emboss.patch

	# 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.
	cp ${FILESDIR}/${P}-staden_help.new ${S}/linux-bin/staden_help
	chmod +x ${S}/linux-bin/staden_help

	# Remove the prebuilt EMBOSS tcl/tk GUIs.
	rm ${S}/tables/emboss_menu
	rm -r ${S}/lib/spin2_emboss/acdtcl

}

src_install() {
	# Executables and libraries
	into /opt/${PN}
	mkdir -p ${D}/opt/${PN}
	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}

	# Man pages
	doman ${S}/doc/manual/man/man*/*

	# Documentation
	mv ${WORKDIR}/doc ${D}/opt/${PN}/doc

	# A short course in printable format along with some data
	use doc && mv ${WORKDIR}/course ${D}/opt/${PN}/course
}

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
}