summaryrefslogtreecommitdiff
blob: 70312bb39753c9546171bf74fac1f94568633ac2 (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
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit eutils fortran-2 toolchain-funcs flag-o-matic

# MIDVERS is actually used by MIDAS configuration scripts
export MIDVERS="17FEBpl1.2"

DESCRIPTION="European Southern Observatory Munich Image Data Analysis System"
HOMEPAGE="http://www.eso.org/projects/esomidas/"
SRC_URI="ftp://ftp.eso.org/pub/midaspub/17FEB/sources/${MIDVERS}.tar.gz -> ${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0/8"
KEYWORDS="~amd64 ~x86"

IUSE="+libtirpc"

RDEPEND="
	sys-libs/readline:0=
	x11-libs/motif:0=
	x11-libs/libX11:=
	x11-libs/libXt:=
	!libtirpc? ( sys-libs/glibc[rpc(-)] )
	libtirpc? ( net-libs/libtirpc )
"
DEPEND="${RDEPEND}"

S="${WORKDIR}/${MIDVERS}"

PATCHES=(
	"${FILESDIR}/${P}-output_to_stdout.patch"
	"${FILESDIR}/${P}-gentoo-setup.patch"
	"${FILESDIR}/${P}-rpc.patch"
)

src_prepare() {
	default
	# variables for all phases and midas internal build system
	export MIDASHOME="${WORKDIR}"
	export MID_HOME="${S}"
	export MID_HOME0="/usr/$(get_libdir)/esomidas/${MIDVERS}"
	export MID_INSTALL="${MID_HOME}/install/unix"
	export MID_SYS="${MID_HOME}/system/unix/"
	export MID_WORK="${MIDASHOME}/midwork"

	# sadly this enforces static linking
	if use libtirpc ; then
		RPC_OPT="-I/usr/include/tirpc"
		RPC_LIB="-ltirpc"
	else
		RPC_OPT=""
		RPC_LIB=""
	fi

	# create a gentoo option file
	mkdir ${MID_INSTALL}/systems/Gentoo || die
	cat >> ${MID_INSTALL}/systems/Gentoo/make_options <<-EOF
		CC=$(tc-getCC)
		LDCC=$(tc-getCC)
		F77=$(tc-getFC)
		FC=$(tc-getFC)
		LD77_CMD=$(tc-getFC)
		AR=$(tc-getAR)
		RANLIB=$(tc-getRANLIB)
		F_OPT=
		C_OPT=
		E_OPT=$(use amd64 && echo -Z)
		SYS=
		SH_OPT=-fPIC
		SH_CMD=${MIDASHOME}/${MIDVERS}/local/make_shared
		GUI_OPT=-DPATH_MAX=1024
		STRIP=echo
		EDITFLAGS=-DVOID_SIGHANDLER -DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_GETPW_DECLS -DHAVE_DIRENT_H -DHAVE_STRING_H -DLinux -DHAVE_UNISTD_H -DHAVE_STDLIB_H
		EDITLIBS=-lreadline
		UIMX=uimxR5
		INSTALL_FLAG=auto
		RPC_OPT=${RPC_OPT}
		RPC_LIB=${RPC_LIB}
	EOF
	sed -e "s|gcc|$(tc-getCC) \${LDFLAGS}|" \
		${MID_INSTALL}/systems/Linux/make_shared \
		> ${MID_INSTALL}/systems/Gentoo/make_shared || die
	sed -e 's|PC/Linux|Gentoo|' \
		${MID_INSTALL}/systems/Linux/setup \
		> ${MID_INSTALL}/systems/Gentoo/setup || die

	# gentoo readline avoids exporting the xmalloc,xrealloc and xfree
	append-cppflags -Dxrealloc=_rl_realloc -Dxmalloc=_rl_malloc -Dxfree=_rl_free
}

src_configure() {
	${MID_INSTALL}/select all || die "packages selection failed"
	${MID_INSTALL}/preinstall -a || die "preinstallation failed"
	${MID_INSTALL}/install2 || die "configuration failed"
	chmod 755 ${MID_HOME}/local/make_shared
}

src_compile() {
	CMND_YES=2 ${MID_INSTALL}/install3 -a || die "compilation failed"
	[[ -x ${MID_HOME}/monit/midasgo.exe ]] || die "somewhere compilation failed"
	emake -C monit syskeys.unix
	${MID_SYS}/inmidas -m ${MID_WORK} -j "@ compile.all"
	${MID_SYS}/inmidas -m ${MID_WORK} -j "@ ascii_bin no ; bye"
}

src_test() {
	local test_dir="${WORKDIR}/test_tmp"
	mkdir ${test_dir} && cd ${test_dir}
	${MID_SYS}/inmidas -m ${MID_WORK} -j "@ vericopy ; @@ veriall -nodisplay ; bye" || die
	test -f ${MID_WORK}/veriall_* || die "tests failed somewhere"
	rm -rf ${test_dir}
}

src_install() {
	yes | ${MID_SYS}/cleanmidas
	find ${MID_HOME} \( \
		-name "*.a" -o \
		-name "makefile" -o \
		-name "default.mk" -o \
		-name "*.h" -o \
		-name "*.inc" -o \
		-name COPYING -o \
		-name "*~" -o \
		-name "*.mod" \) -delete
	rm -rf ${MID_HOME}/libsrc/ftoc*
	find ${MID_HOME} -type d -empty -delete

	sed -e "s:^MIDVERS0=.*:MIDVERS0=${MIDVERS}:" \
		-e "s:^MIDASHOME0=.*:MIDASHOME0=/usr/$(get_libdir)/esomidas:" \
		-i ${MID_HOME}/system/unix/{inmidas,helpmidas,drs}

	cd "${WORKDIR}"
	dodir /usr/$(get_libdir)/esomidas
	mv "${S}" "${ED}"${MID_HOME0}
	chmod 0644 "${ED}"${MID_HOME0}/contrib/baches/*/*.fit \
			   "${ED}"${MID_HOME0}/contrib/baches/*/*.fmt \
			   "${ED}"${MID_HOME0}/contrib/baches/*/*.datorg \
			   "${ED}"${MID_HOME0}/contrib/baches/*/*.prg \
			   "${ED}"${MID_HOME0}/contrib/baches/*/*.README
	find "${ED}"${MID_HOME0} -name \*.sh | xargs chmod 0755
	chmod 0755 "${ED}"${MID_HOME0}/util/bench/brun

	dosym ${MID_HOME0}/system/unix/inmidas /usr/bin/inmidas
	dosym ${MID_HOME0}/system/unix/gomidas /usr/bin/gomidas
	dosym ${MID_HOME0}/system/ftoc-new ${MID_HOME0}/system/good-ftoc
}