File proguard.spec of Package proguard

#
# spec file for package proguard (Version 4.2)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# 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/
#

# norootforbuild


Name:           proguard
Summary:        Java class file shrinker, optimizer, obfuscator, and preverifier
License:        GPL v2 only
Version:        4.2
Release:        18
Url:            http://proguard.sourceforge.net/
Group:          Development/Languages/Java
Source0:        %{name}%{version}.tar.bz2
Source1:        %{name}.manifest
Source2:        %{name}gui.manifest
Source3:        %{name}.sh
Source4:        %{name}gui.sh
Requires:       jre >= 1.5.0
BuildRequires:  java-devel
BuildRequires:  ant
BuildRequires:  jpackage-utils
Requires:       ant
PreReq:         jpackage-utils
BuildArch:      noarch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
ProGuard is a free Java class file shrinker, optimizer, obfuscator,
   and preverifier. It detects and removes unused classes, fields,
   methods, and attributes. It optimizes bytecode and removes unused
   instructions. It renames the remaining classes, fields, and
   methods using short meaningless names. Finally, it preverifies
   the processed code for Java 6 or for Java Micro Edition.  Some
   uses of ProGuard are: - Creating more compact code, for smaller
   code archives, faster transfer across networks, faster loading,
   and smaller memory footprints.

- Making programs and libraries harder to reverse-engineer.

- Listing dead code, so it can be removed from the source code.

- Retargeting and preverifying existing class files for Java 6, to
   take full advantage of Java 6's faster class loading.

- ProGuard's main advantage compared to other Java obfuscators is
   probably its compact template-based configuration. A few
   intuitive command line options or a simple configuration file are
   usually sufficient. For instance, the following configuration
   option preserves all applets in a jar: -keep public class *
   extends java.applet.Applet

The user manual explains all available options and shows more examples
of this powerful configuration style.  ProGuard is fast. It only takes
seconds to process programs and libraries of several megabytes. The
results section presents actual figures for a number of applications. 
ProGuard is a command-line tool with an optional graphical user
interface.



%package gui
License:        GPL v2 only
Summary:        Java class file shrinker, optimizer, obfuscator, and preverifier
Group:          Development/Languages/Java
Requires:       %{name} = %{version}

%description gui
ProGuard is a free Java class file shrinker, optimizer, obfuscator,
   and preverifier. It detects and removes unused classes, fields,
   methods, and attributes. It optimizes bytecode and removes unused
   instructions. It renames the remaining classes, fields, and
   methods using short meaningless names. Finally, it preverifies
   the processed code for Java 6 or for Java Micro Edition.  Some
   uses of ProGuard are: - Creating more compact code, for smaller
   code archives, faster transfer across networks, faster loading,
   and smaller memory footprints.

- Making programs and libraries harder to reverse-engineer.

- Listing dead code, so it can be removed from the source code.

- Retargeting and preverifying existing class files for Java 6, to
   take full advantage of Java 6's faster class loading.

- ProGuard's main advantage compared to other Java obfuscators is
   probably its compact template-based configuration. A few
   intuitive command line options or a simple configuration file are
   usually sufficient. For instance, the following configuration
   option preserves all applets in a jar: -keep public class *
   extends java.applet.Applet

The user manual explains all available options and shows more examples
of this powerful configuration style.  ProGuard is fast. It only takes
seconds to process programs and libraries of several megabytes. The
results section presents actual figures for a number of applications. 
ProGuard is a command-line tool with an optional graphical user
interface.



%package doc
License:        GPL v2 only
Summary:        Java class file shrinker, optimizer, obfuscator, and preverifier
Group:          Development/Languages/Java

%description doc
ProGuard is a free Java class file shrinker, optimizer, obfuscator,
   and preverifier. It detects and removes unused classes, fields,
   methods, and attributes. It optimizes bytecode and removes unused
   instructions. It renames the remaining classes, fields, and
   methods using short meaningless names. Finally, it preverifies
   the processed code for Java 6 or for Java Micro Edition.  Some
   uses of ProGuard are: - Creating more compact code, for smaller
   code archives, faster transfer across networks, faster loading,
   and smaller memory footprints.

- Making programs and libraries harder to reverse-engineer.

- Listing dead code, so it can be removed from the source code.

- Retargeting and preverifying existing class files for Java 6, to
   take full advantage of Java 6's faster class loading.

- ProGuard's main advantage compared to other Java obfuscators is
   probably its compact template-based configuration. A few
   intuitive command line options or a simple configuration file are
   usually sufficient. For instance, the following configuration
   option preserves all applets in a jar: -keep public class *
   extends java.applet.Applet

The user manual explains all available options and shows more examples
of this powerful configuration style.  ProGuard is fast. It only takes
seconds to process programs and libraries of several megabytes. The
results section presents actual figures for a number of applications. 
ProGuard is a command-line tool with an optional graphical user
interface.



%package javadoc
License:        GPL v2 only
Summary:        Java class file shrinker, optimizer, obfuscator, and preverifier
Group:          Development/Languages/Java

%description javadoc
ProGuard is a free Java class file shrinker, optimizer, obfuscator,
   and preverifier. It detects and removes unused classes, fields,
   methods, and attributes. It optimizes bytecode and removes unused
   instructions. It renames the remaining classes, fields, and
   methods using short meaningless names. Finally, it preverifies
   the processed code for Java 6 or for Java Micro Edition.  Some
   uses of ProGuard are: - Creating more compact code, for smaller
   code archives, faster transfer across networks, faster loading,
   and smaller memory footprints.

- Making programs and libraries harder to reverse-engineer.

- Listing dead code, so it can be removed from the source code.

- Retargeting and preverifying existing class files for Java 6, to
   take full advantage of Java 6's faster class loading.

- ProGuard's main advantage compared to other Java obfuscators is
   probably its compact template-based configuration. A few
   intuitive command line options or a simple configuration file are
   usually sufficient. For instance, the following configuration
   option preserves all applets in a jar: -keep public class *
   extends java.applet.Applet

The user manual explains all available options and shows more examples
of this powerful configuration style.  ProGuard is fast. It only takes
seconds to process programs and libraries of several megabytes. The
results section presents actual figures for a number of applications. 
ProGuard is a command-line tool with an optional graphical user
interface.



%prep
%setup -q -n %{name}%{version}
cp -a %{SOURCE1} %{SOURCE2} .

%build
# create jars
mkdir dist
#proguard.jar
mkdir -p build/proguard/classes
javac -source 1.5 -target 1.5 -sourcepath src -d build/proguard/classes src/proguard/ProGuard.java
javac -source 1.5 -target 1.5 -sourcepath src -classpath $(build-classpath ant) \
        -d build/proguard/classes src/proguard/ant/ProGuardTask.java
cp src/proguard/ant/task.properties build/proguard/classes/proguard/ant/
jar -cfm dist/%{name}-%{version}.jar proguard.manifest -C build/proguard/classes proguard 
#proguardgui.jar
mkdir -p build/proguardgui/classes
javac -source 1.5 -target 1.5 -sourcepath src -d build/proguardgui/classes src/proguard/gui/ProGuardGUI.java
jar -cfm dist/%{name}gui-%{version}.jar proguardgui.manifest -C build/proguardgui/classes proguard
#retrace.jar
mkdir -p build/retrace/classes
javac -source 1.5 -target 1.5 -sourcepath src -d build/retrace/classes src/proguard/retrace/ReTrace.java
jar -cf dist/retrace-%{version}.jar -C build/retrace/classes proguard
#proguard-ant.jar
#mkdir -p build/ant/classes
#jar -cf dist/%{name}-ant-%{version}.jar -C build/ant/classes proguard
#javadoc
mkdir javadoc
javadoc -d javadoc -sourcepath src -classpath $(build-classpath ant) -subpackages proguard

%install
#jars
install -d -m 755 $RPM_BUILD_ROOT/%{_javadir}
install -m 644 dist/*.jar $RPM_BUILD_ROOT/%{_javadir}
#jars
install -d -m 755 $RPM_BUILD_ROOT/%{_bindir}
install -m 755 %{SOURCE3} $RPM_BUILD_ROOT/%{_bindir}/%{name}
install -m 755 %{SOURCE4} $RPM_BUILD_ROOT/%{_bindir}/%{name}gui
(cd $RPM_BUILD_ROOT%{_javadir} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{version}||g"`; done)
#doc
install -d -m 755 $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}-%{version}
cp -ar docs/* examples $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}-%{version}/
#javadoc
install -d -m 755 $RPM_BUILD_ROOT/%{_javadocdir}/%{name}-%{version}
cp -ar javadoc/* $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}-%{version}/

%files
%defattr(-,root,root)
%doc README
%{_bindir}/%{name}
%{_javadir}/%{name}.jar
%{_javadir}/%{name}-%{version}.jar
%{_javadir}/retrace.jar
%{_javadir}/retrace-%{version}.jar

%files gui
%defattr(-,root,root)
%doc README
%{_bindir}/%{name}gui
%{_javadir}/%{name}gui.jar
%{_javadir}/%{name}gui-%{version}.jar

%files doc
%defattr(-,root,root)
%doc %{_defaultdocdir}/%{name}-%{version}

%files javadoc
%defattr(-,root,root)
%{_javadocdir}/%{name}-%{version}
#%files -n ant-%{name}
#%defattr(-,root,root)
#%{_javadir}/%{name}-ant.jar
#%{_javadir}/%{name}-ant-%{version}.jar

%changelog
* Wed Sep 10 2008 mvyskocil@suse.cz
- Add a manifest files to jar
* Fri Aug 29 2008 mvyskocil@suse.cz
- target=1.5 source=1.5
* Mon Aug 11 2008 mvyskocil@suse.cz
- Initial packaging in SUSE version 4.2
openSUSE Build Service is sponsored by