aboutsummaryrefslogtreecommitdiff
blob: 29c308f51c7f931f79a06587b5692c05da7f8d48 (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
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit java-pkg-2 python-r1

DESCRIPTION="Viewer of next generation sequence assemblies and alignments."
HOMEPAGE="http://ics.hutton.ac.uk/tablet/"
SRC_URI="
	x86? ( http://bioinf.hutton.ac.uk/tablet/installers/tablet_linux_x86_$(replace_all_version_separators _).sh -> ${P}.sh )
	amd64? ( http://bioinf.hutton.ac.uk/tablet/installers/tablet_linux_x64_$(replace_all_version_separators _).sh -> ${P}.sh )
	http://bioinf.hutton.ac.uk/tablet/additional/coveragestats.py"

# Upstream says regarding source code unavailability:
# Tablet uses a modified version of the BSD License which has been edited to
# remove references to distribution and use in source forms. This means that
# we are happy for you to distribute and use Tablet however you please, but we
# do not (yet) want to make the source code publicly available.

# The licence file itself is in the installer, and ends up on disk after
# installation at /opt/Tablet/docs/tablet.html
# The original BSD licence was modified to remove references to distribution
# and use in source forms, because we cannot make the source code available
# for Tablet.

LICENSE="Tablet"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

DEPEND="${PYTHON_DEPS}"
RDEPEND="${DEPEND}
		virtual/jre"

S="${WORKDIR}"

src_unpack() {
	local file
	for file in ${A}; do
		cp "${DISTDIR}"/${file} "${WORKDIR}" || die
	done
}

src_install() {
	# In theory it seems this binary package could be installed through ant
	# instead of the install4j package which is not easy to be forced
	# non-interactive. The below approach via install4j is not ideal but works.
	sed "s#\"\${D}\"#\"${D}\"#g" "${FILESDIR}"/response.varfile > "${WORKDIR}"/response.varfile || die "sed failed"

	# the intallation script somehow does not pickup
	# -varfile="${DISTDIR}"/response.varfile from the commandline and therefore
	# we place the file rather directly into the place where it should reside.
	# In the file you can read details how the variables were mangled. For
	# example, the trick with sys.symlinkDir in the response.varfile is to
	# disable the installation process to symlink from /usr/local/bin/table to
	# /opt/Tablet/tablet. That was logged in that file with the following line:
	#
	# /var/tmp/portage/sci-biology/tablet-bin-1.11.02.18/image/opt/Tablet/.install4j/installation.log:
	#	Variable changed: sys.symlinkDir=/usr/local/bin[class java.lang.String]
	#
	# The file is then left on the installed system in "${D}"/opt/Tablet/.install4j/response.varfile
	dodir /opt/Tablet/.install4j
	cat "${WORKDIR}"/response.varfile > "${ED}"/opt/Tablet/.install4j/response.varfile || die

	# make sure we force java to point a to $HOME which is inside our sanbox
	# directory area. We force -Duser.home . It seems also -Dinstall4j.userHome
	# could be done based on the figure shown at http://resources.ej-technologies.com/install4j/help/doc/
	sed \
		-e "s#/bin/java\" -Dinstall4j.jvmDir#/bin/java\" -Duser.home="${TMPDIR}" -Dinstall4j.jvmDir#" \
		-i "${WORKDIR}"/${P}.sh || die
	sh \
		"${WORKDIR}"/${P}.sh \
		-q -overwrite \
		-varfile="${DISTDIR}"/response.varfile \
		--destination="${ED}"/opt/Tablet \
		-dir "${ED}"/opt/Tablet || die

	rm -rf "${ED}"/opt/Tablet/jre || die

	# this dies with tablet-bin-1.14.04.10 with
	#  * python2_7: running python_doscript /mnt/1TB/var/tmp/portage/sci-biology/tablet-bin-1.14.04.10/work/coveragestats.py
	#  * The file has incompatible shebang:
	#  *   file: /usr/lib/python-exec/python2.7/coveragestats.py
	#  *   current shebang: #!/usr/bin/env python
	#  *   requested impl: python2.7
	#
	# python_foreach_impl python_doscript "${WORKDIR}"/coveragestats.py

	echo "PATH=${EPREFIX}/opt/Tablet" > 99Tablet
	doenvd 99Tablet || die
}