File tuxguitar.spec of Package tuxguitar
#
# spec file for package tuxguitar
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2008-2017 Orcan Ogetbil <oget[DOT]fedora[AT]gmail[DOT]com>
# Copyright (c) 2008-2017 Fedora project
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Summary: A multitrack tablature editor and player written in Java-SWT
License: LGPL-2.1+
Group: Applications/Multimedia
Name: tuxguitar
Version: 1.4
Release: 0
Url: http://www.tuxguitar.pw
# Source file cleaned of potentially proprietary SF2, DLL, EXE files:
# wget -N http://downloads.sourceforge.net/tuxguitar/tuxguitar-1.4-src.tar.gz
# tar zxf tuxguitar-1.4-src.tar.gz
# find tuxguitar-1.4-src -name "*.exe" -exec rm {} \;
# find tuxguitar-1.4-src -name "*.dll" -exec rm {} \;
# find tuxguitar-1.4-src -name "*.sf2" -exec rm {} \;
# tar zcf tuxguitar-1.4-src-clean.tar.gz tuxguitar-1.4-src
Source0: %{name}-%{version}-src-clean.tar.gz
Patch0: tuxguitar-startscript.patch
Patch1: tuxguitar-default-soundfont.patch
Patch2: tuxguitar-jsa-build.patch
Patch3: tuxguitar-tray-build.patch
Patch4: tuxguitar-do-not-force-java-1.5.patch
Requires: eclipse-swt
Requires: java >= 1.7
Requires: javapackages-tools
# use FluidR3_GM.sf2 (from fluid-soundfont-gm) as default sound font
Requires: fluid-soundfont-gm
Recommends: timidity
Recommends: snd_sf2
# export to PDF feature requires itext
#Requires: itext
#BuildRequires: itext
BuildRequires: alsa-devel
BuildRequires: ant
BuildRequires: ant-contrib
BuildRequires: desktop-file-utils
BuildRequires: eclipse-swt
BuildRequires: fdupes
BuildRequires: fluidsynth-devel
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: java-devel >= 1.7
BuildRequires: javapackages-tools
BuildRequires: update-desktop-files
%description
TuxGuitar is a guitar tablature editor with player support through midi. It can
display scores and multitrack tabs. Various features TuxGuitar provides include
autoscrolling while playing, note duration management, bend/slide/vibrato/
hammer-on/pull-off effects, support for tuplets, time signature management,
tempo management, gp3/gp4/gp5 import and export.
%prep
%setup -q -n %{name}-%{version}-src
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
# Set debug="true" on javac part of the build scripts.
for file in $(find . -name build.xml); do
sed -i 's|debug="false"|debug="true"|' $file
done
# Don't force compiling with JAVA 1.5
find . -wholename "./*/build.properties" -exec sed -re "s/^ant.build.javac.source=1.5/#ant.build.javac.source=1.5/" -i {} \;
find . -wholename "./*/build.properties" -exec sed -re "s/^ant.build.javac.target=1.5/#ant.build.javac.target=1.5/" -i {} \;
# Fix build.properties files by providing paths to required jar files
sed "s/TuxGuitar-ui-toolkit\/tuxguitar-ui-toolkit-swt.jar/TuxGuitar-ui-toolkit-swt\/tuxguitar-ui-toolkit-swt.jar/" \
-i TuxGuitar-image/build.properties
sed "s/TuxGuitar-ui-toolkit\/tuxguitar-ui-toolkit-swt.jar/TuxGuitar-ui-toolkit-swt\/tuxguitar-ui-toolkit-swt.jar/" \
-i TuxGuitar-tray/build.properties
echo "path.tuxguitar-editor-utils=../TuxGuitar-editor-utils/tuxguitar-editor-utils.jar" \
>> TuxGuitar-tray/build.properties
echo -e "\npath.tuxguitar-editor-utils=../TuxGuitar-editor-utils/tuxguitar-editor-utils.jar" \
>> TuxGuitar-tray/build.properties
echo "path.tuxguitar-editor-utils=../TuxGuitar-editor-utils/tuxguitar-editor-utils.jar" \
>> TuxGuitar-jsa/build.properties
# Use fluidsynth by default
sed "s/tuxguitar-fluidsynth.enabled=false/tuxguitar-fluidsynth.enabled=true/" \
-i build-scripts/common-resources/common-linux/dist/tuxguitar-plugin-settings.cfg
sed -re "s/midi.port=.*$/midi.port=tuxguitar-fluidsynth_\/usr\/share\/sounds\/sf2\/FluidR3_GM.sf2/" \
-i build-scripts/common-resources/common-linux/dist/tuxguitar.cfg
# Update URL
sed "s/www.tuxguitar.com.ar/www.tuxguitar.pw/" -i TuxGuitar/dist/about_description.dist
# Remove duplicated files
rm -fr TuxGuitar/doc
rm -f TuxGuitar/dist/tuxguitar.cfg
# Remove not needed file
rm -f TuxGuitar/share/lang/toutf.pl
%build
# Plugins to build:
PLUGINS="alsa ascii browser-ftp compat converter fluidsynth gervill gm-settings gpx gtp \
image jack jsa lilypond midi musicxml oss ptb svg tef tray tuner viewer"
# FIXME: "pdf" plugin requires itext, but even after adding itext 1.4 from Education repo:
# error: package com.itextpdf.text does not exist
# JNI's to build
JNIS="alsa fluidsynth jack oss"
LIBSUFFIX=$(echo %{_lib}|sed 's|lib||')
# to pass to ant:
ANT_FLAGS=" \
-Dant.build.javac.source=1.6 -Dant.build.javac.target=1.6 \
-Dpath.tuxguitar=$PWD/TuxGuitar/%{name}.jar \
-Dpath.swt=%{_libdir}/java/swt.jar \
-Dlib.swt.jar=%{_libdir}/java/swt.jar \
-Ddist.lib.path=%{_libdir}/%{name}/ \
-Ddist.jar.path=%{_datadir}/%{name}/ \
-Ddist.share.path=%{_datadir}/%{name}/ \
-Dos.bin.dir=%{_bindir} \
-Dos.lib.suffix=$LIBSUFFIX \
-Dos.data.dir=%{_datadir}/ \
-Ddist.default.style=Oxygen \
-Ddist.default.song=%{_datadir}/%{name}/%{name}.tg"
# -Dpath.itext=% {_javadir}/itext.jar \
# build jars
ant -f TuxGuitar-lib/build.xml -v -d $ANT_FLAGS all
ant -f TuxGuitar-editor-utils/build.xml -v -d $ANT_FLAGS all
ant -f TuxGuitar-ui-toolkit/build.xml -v -d $ANT_FLAGS all
ant -f TuxGuitar-ui-toolkit-swt/build.xml -v -d $ANT_FLAGS all
ant -f TuxGuitar/build.xml -v -d $ANT_FLAGS all
ant -f TuxGuitar-gm-utils -v -d $ANT_FLAGS all
for jarname in $PLUGINS; do
ant -f TuxGuitar-$jarname/build.xml -v -d $ANT_FLAGS \
-Dbuild.jar=../TuxGuitar/share/plugins/tuxguitar-$jarname.jar all
done
# build jnis
for jni in $JNIS; do
make -C TuxGuitar-$jni/jni %{?_smp_mflags} CFLAGS="${RPM_OPT_FLAGS} \
-I%{_jvmdir}/java-openjdk/include \
-I%{_jvmdir}/java-openjdk/include/linux \
-fPIC"
done
%install
# install main content
install -dm 755 $RPM_BUILD_ROOT/%{_bindir}
install -dm 755 $RPM_BUILD_ROOT/%{_datadir}/%{name}
install -pm 644 TuxGuitar/dist/* $RPM_BUILD_ROOT/%{_datadir}/%{name}/
cp -r TuxGuitar/share/* $RPM_BUILD_ROOT/%{_datadir}/%{name}
install -pm 755 misc/%{name}.sh $RPM_BUILD_ROOT/%{_bindir}/%{name}
install -pm 644 misc/%{name}.tg $RPM_BUILD_ROOT/%{_datadir}/%{name}/%{name}.tg
install -pm 644 build-scripts/common-resources/common-linux/dist/*.cfg $RPM_BUILD_ROOT/%{_datadir}/%{name}/
for jardir in TuxGuitar* ; do
if [ -e $jardir/*jar ]
then
install -m 644 $jardir/*jar $RPM_BUILD_ROOT/%{_datadir}/%{name}/
fi
done
# install jnis we built
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}
cp -a TuxGuitar-*/jni/*.so $RPM_BUILD_ROOT%{_libdir}/%{name}/
# mime-type file
install -dm 755 $RPM_BUILD_ROOT/%{_datadir}/mime/packages
install -pm 644 misc/%{name}.xml $RPM_BUILD_ROOT/%{_datadir}/mime/packages/
# man
install -dm 755 $RPM_BUILD_ROOT/%{_mandir}/man1/
install -pm 644 misc/%{name}.1 $RPM_BUILD_ROOT/%{_mandir}/man1/
# desktop files
install -dm 755 $RPM_BUILD_ROOT/%{_datadir}/applications
install -pm 644 misc/tuxguitar.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/
# mime-type icons
for sz in 16 24 32 48 64 96 ; do
install -dm 755 $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/${sz}x${sz}/mimetypes
install -pm 644 TuxGuitar/share/skins/Lavender/icon-${sz}x${sz}.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/${sz}x${sz}/mimetypes/audio-x-tuxguitar.png
install -pm 644 TuxGuitar/share/skins/Lavender/icon-${sz}x${sz}.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/${sz}x${sz}/mimetypes/audio-x-gtp.png
install -pm 644 TuxGuitar/share/skins/Lavender/icon-${sz}x${sz}.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/${sz}x${sz}/mimetypes/audio-x-ptb.png
done
#install also big icon
install -D -m 644 TuxGuitar/share/skins/Lavender/icon-48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/tuxguitar.png
%suse_update_desktop_file -n -i tuxguitar AudioVideo Music Java
%fdupes $RPM_BUILD_ROOT
%check
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
%post
touch --no-create %{_datadir}/icons/hicolor &>/dev/null
touch --no-create %{_datadir}/mime/packages &> /dev/null || :
update-desktop-database &> /dev/null
%postun
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor &>/dev/null
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null
update-mime-database %{_datadir}/mime >& /dev/null ||:
fi
update-desktop-database &> /dev/null
%posttrans
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
update-mime-database %{_datadir}/mime &> /dev/null || :
%files
%defattr(-,root,root,-)
%doc README
%{_mandir}/*/*
%{_bindir}/%{name}
%{_libdir}/%{name}
%{_datadir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/*/*
%{_datadir}/pixmaps/%{name}.png
%{_datadir}/mime/packages/%{name}.xml
%changelog