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

# @ECLASS: virtuoso.eclass
# @MAINTAINER:
# Maciej Mrozowski <reavertm@gentoo.org>
# Chris Reffett <creffett@gentoo.org>
#
# @BLURB: Provides splitting functionality for Virtuoso
# @DESCRIPTION:
# This eclass provides common code for splitting Virtuoso OpenSource database

case ${EAPI:-0} in
	2|3|4|5) : ;;
	*) die "EAPI=${EAPI} is not supported" ;;
esac

inherit autotools multilib eutils

MY_P="virtuoso-opensource-${PV}"

case ${PV} in
	*9999*)
		ECVS_SERVER="virtuoso.cvs.sourceforge.net:/cvsroot/virtuoso"
		ECVS_PROJECT='virtuoso'
		SRC_URI=""
		inherit cvs
		;;
	*)
		# Use this variable to determine distribution method (live or tarball)
		TARBALL="${MY_P}.tar.gz"
		SRC_URI="mirror://sourceforge/virtuoso/${TARBALL} mirror://gentoo/VOS-genpatches-${PV}.tar.bz2"
		;;
esac

EXPORT_FUNCTIONS src_prepare src_configure

# Set some defaults
HOMEPAGE='http://virtuoso.openlinksw.com/wiki/main/Main/'
LICENSE='GPL-2'
SLOT='0'

DEPEND='
	>=sys-devel/libtool-2.2.6a
'
RDEPEND=''

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

# @FUNCTION: virtuoso_src_prepare
# @DESCRIPTION:
# 1. Applies common release patches
# 2. Applies package-specific patches (from ${FILESDIR}/, PATCHES can be used)
# 3. Applies user patches from /etc/portage/patches/${CATEGORY}/${PN}/
# 4. Modifies makefiles for split build. Uses VOS_EXTRACT
# 5. eautoreconf
virtuoso_src_prepare() {
	debug-print-function ${FUNCNAME} "$@"

	EPATCH_SUFFIX='patch' EPATCH_FORCE='yes' epatch
	pushd "${S}" >/dev/null
	[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"

	debug-print "$FUNCNAME: applying user patches"
	epatch_user


	# @ECLASS-VARIABLE: VOS_EXTRACT
	# @DESCRIPTION:
	# Lists any subdirectories that are required to be extracted
	# and enabled in Makefile.am's for current package.
	if [[ -n ${VOS_EXTRACT} ]]; then
		# Comment out everything
		find . -name Makefile.am -exec \
			sed -e '/SUBDIRS\s*=/s/^/# DISABLED /g' -i {} + \
				|| die 'failed to disable subdirs'

		# Uncomment specified
		local path
		for path in ${VOS_EXTRACT}; do
			if [[ -d "${path}" ]]; then
				# Uncomment leaf
				if [[ -f "${path}"/Makefile.am ]]; then
					sed -e '/^# DISABLED \s*SUBDIRS\s*=/s/# DISABLED //g' \
						-i "${path}"/Makefile.am || die "failed to uncomment leaf in ${path}/Makefile.am"
				fi
				# Process remaining path elements
				while true; do
					local subdir=`basename "${path}"`
					path=`dirname "${path}"`
					if [[ -f "${path}"/Makefile.am ]]; then
						# Uncomment if necessary
						sed -e '/^# DISABLED \s*SUBDIRS\s*=/s/.*/SUBDIRS =/g' \
							-i "${path}"/Makefile.am
						# Append subdirs if not there already
						if [[ -z `sed -ne "/SUBDIRS\s*=.*${subdir}\b/p" "${path}"/Makefile.am` ]]; then
							sed -e "/^SUBDIRS\s*=/s|$| ${subdir}|" \
								-i "${path}"/Makefile.am || die "failed to append ${subdir}"
						fi
					fi
					[[ "${path}" = . ]] && break
				done
			fi
		done
	fi

	eautoreconf
}

# @FUNCTION: virtuoso_src_configure
# @DESCRIPTION:
# Runs ./configure with common and user options specified via myconf variable
virtuoso_src_configure() {
	debug-print-function ${FUNCNAME} "$@"

	# Override some variables to make tests work
	if [[ ${PN} != virtuoso-server ]]; then
		[[ ${EAPI} == 2 ]] && ! use prefix && EPREFIX=
		export ISQL="${EPREFIX}"/usr/bin/isql-v
		export SERVER="${EPREFIX}"/usr/bin/virtuoso-t
	fi

	econf \
		--with-layout=gentoo \
		--localstatedir="${EPREFIX}"/var \
		--enable-shared \
		--with-pthreads \
		--without-internal-zlib \
		${myconf}
}