summaryrefslogtreecommitdiff
blob: 7c0a2bf1b65cad664ea36dc57766d13e609f973e (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-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

MY_P="${P}-src"
JAVA_PKG_IUSE="source"
inherit desktop java-pkg-2 java-ant-2 toolchain-funcs flag-o-matic xdg-utils

DESCRIPTION="Multitrack guitar tablature editor and player written in Java-SWT"
HOMEPAGE="http://www.tuxguitar.com.ar/"
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"

LICENSE="LGPL-2.1"
SLOT="0"
IUSE="alsa fluidsynth jack lilypond oss pdf timidity tray"
KEYWORDS="~amd64 ~x86"

COMMON_DEPEND="
	dev-java/swt:3.7[cairo]
	alsa? ( media-libs/alsa-lib )
	pdf? ( dev-java/itext:5 )
	fluidsynth? ( media-sound/fluidsynth:= )
	lilypond? ( media-sound/lilypond )
"
RDEPEND="${COMMON_DEPEND}
	>=virtual/jre-1.5
	timidity? ( media-sound/timidity++[alsa?,oss?] )
"
DEPEND="${COMMON_DEPEND}
	>=virtual/jdk-1.5
"

PATCHES=( "${FILESDIR}"/${PN}-fixed-ant-files.patch )

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

LIBRARY_LIST=()
PLUGIN_LIST=()

src_prepare() {
	java-pkg-2_src_prepare
	default_src_prepare

	sed -e "s|../TuxGuitar/lib/swt.jar|$(java-pkg_getjar swt-3.7 swt.jar)|" \
		-i TuxGuitar*/build.properties || die "sed TuxGuitar*/build.properties failed"

	if use pdf; then
		sed -e "s|../TuxGuitar/lib/itext.jar|$(java-pkg_getjar itext-5 itext.jar)|" \
		-i TuxGuitar-pdf/build.properties || die "sed TuxGuitar-pdf/build.properties failed"
	fi

	LIBRARY_LIST=( TuxGuitar-lib TuxGuitar-awt-graphics TuxGuitar-editor-utils
		TuxGuitar-gm-utils TuxGuitar
	)

	PLUGIN_LIST=( $(usev alsa) ascii browser-ftp community compat
		converter $(usev fluidsynth) gm-settings gpx gtp gtp-ui image
		$(usev jack) $(usex jack jack-ui "") jsa $(usev lilypond) midi
		musicxml $(usev oss) $(usev pdf) ptb svg tef $(usev tray) tuner
	)
}

src_compile() {
	local build_order=( ${LIBRARY_LIST[@]} ${PLUGIN_LIST[@]/#/TuxGuitar-} )
	local directory

	append-flags -fPIC $(java-pkg_get-jni-cflags)

	for directory in ${build_order[@]}; do
		cd "${S}"/${directory} || die "cd ${directory} failed"
		eant
		if [[ -d jni ]]; then
			CC=$(tc-getCC) emake -C jni
		fi
	done
}

src_install() {
	local tuxguitar_inst_path="/usr/share/${PN}"
	local library
	local plugin

	for library in ${LIBRARY_LIST[@]}; do
		cd "${S}"/${library} || die "cd ${library} failed"
		java-pkg_dojar ${library,,}.jar
		use source && java-pkg_dosrc src/org
	done

	java-pkg_dolauncher ${PN} \
		--main org.herac.tuxguitar.app.TGMainSingleton \
		--java_args "-Xmx512m  -Dtuxguitar.share.path=${tuxguitar_inst_path}/share"

	# Images and Files
	insinto ${tuxguitar_inst_path}
	doins -r share

	java-pkg_sointo ${tuxguitar_inst_path}/lib
	insinto ${tuxguitar_inst_path}/share/plugins
	for plugin in ${PLUGIN_LIST[@]/#/TuxGuitar-}; do
		cd "${S}"/${plugin} || die "cd ${plugin} failed"
		doins ${plugin,,}.jar

		#TuxGuitar has its own classloader. No need to register the plugins.
		if [[ -d jni ]]; then
			java-pkg_doso jni/lib${plugin,,}-jni.so
		fi
	done

	insinto ${tuxguitar_inst_path}/share
	doins -r "${S}"/TuxGuitar-resources/resources/soundfont
	doman "${S}/misc/${PN}.1"
	insinto /usr/share/mime/packages
	doins "${S}/misc/${PN}.xml"
	doicon "${S}/misc/${PN}.xpm"
	domenu "${S}/misc/${PN}.desktop"
}

pkg_postinst() {
	xdg_desktop_database_update
	xdg_icon_cache_update
	if use fluidsynth; then
		ewarn "Fluidsynth plugin blocks behavior of JSA plugin."
		ewarn "Enable only one of them in \"Tools > Plugins\""
	fi
}

pkg_postrm() {
	xdg_desktop_database_update
	xdg_icon_cache_update
}