diff --git a/7.0.4.tar.gz b/7.0.4.tar.gz
new file mode 100644
index 0000000..f739244
--- /dev/null
+++ b/7.0.4.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6a2381dfae5fdfe7849b921c9950af594ff475b69fbc6e8568365c5734cf77c
+size 2842349
diff --git a/javacc b/javacc
deleted file mode 100644
index a4f1254..0000000
--- a/javacc
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# JavaCC script
-# JPackage Project
-
-# Source functions library
-if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
-else
- echo "Can't find function library, aborting"
- exit 1
-fi
-
-# Configuration
-MAIN_CLASS=javacc
-BASE_JARS="javacc.jar"
-
-# Set parameters
-set_jvm
-set_classpath $BASE_JARS
-set_flags $BASE_FLAGS
-set_options $BASE_OPTIONS
-
-# Let's start
-run "$@"
diff --git a/javacc-5.0src.tar.gz b/javacc-5.0src.tar.gz
deleted file mode 100644
index 68009d4..0000000
--- a/javacc-5.0src.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:766cae9d3710054f452a7f0779db885eacfdae363152cb2e7fe025aa7ea17370
-size 810123
diff --git a/javacc.patch b/javacc.patch
deleted file mode 100644
index 042dab1..0000000
--- a/javacc.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -Naur javacc.old/src/org/javacc/jjdoc/build.xml javacc.changed/src/org/javacc/jjdoc/build.xml
---- javacc.old/src/org/javacc/jjdoc/build.xml 2004-12-24 19:11:13.000000000 +0100
-+++ javacc.changed/src/org/javacc/jjdoc/build.xml 2008-01-28 14:25:00.000000000 +0100
-@@ -38,7 +38,6 @@
-
-
-
-diff -Naur javacc.old/src/org/javacc/jjtree/build.xml javacc.changed/src/org/javacc/jjtree/build.xml
---- javacc.old/src/org/javacc/jjtree/build.xml 2005-08-13 18:57:35.000000000 +0200
-+++ javacc.changed/src/org/javacc/jjtree/build.xml 2008-01-28 14:24:43.000000000 +0100
-@@ -47,7 +47,6 @@
-
-
-
-diff -Naur javacc.old/src/org/javacc/parser/build.xml javacc.changed/src/org/javacc/parser/build.xml
---- javacc.old/src/org/javacc/parser/build.xml 2005-01-09 15:15:34.000000000 +0100
-+++ javacc.changed/src/org/javacc/parser/build.xml 2008-01-28 14:24:12.000000000 +0100
-@@ -45,7 +45,6 @@
-
-
-
diff --git a/javacc.spec b/javacc.spec
index 75d5420..118b2f6 100644
--- a/javacc.spec
+++ b/javacc.spec
@@ -2,6 +2,8 @@
# spec file for package javacc
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2000-2005, JPackage Project
+# All rights reserved.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,98 +14,108 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: javacc
-Version: 5.0
+Version: 7.0.4
Release: 0
-Summary: A Parser and Scanner Generator for Java
-License: BSD-3-Clause
+Summary: A parser/scanner generator for java
+License: BSD
Group: Development/Libraries/Java
-Url: http://javacc.java.net/
-Source0: http://java.net/projects/%{name}/downloads/download/%{name}-%{version}src.tar.gz
-Source1: javacc
-Source2: jjdoc
-Source3: jjtree
-Patch0: javacc.patch
+URL: http://javacc.org
+Source0: https://github.com/javacc/javacc/archive/%{version}.tar.gz
+
BuildRequires: ant
BuildRequires: fdupes
-BuildRequires: java-devel
-BuildRequires: xml-commons-apis
+BuildRequires: javacc
+BuildRequires: javapackages-local
+# Explicit javapackages-tools requires since scripts use
+# /usr/share/java-utils/java-functions
Requires: javapackages-tools
+
BuildArch: noarch
%description
-Java Compiler Compiler (JavaCC) is the most popular parser generator
-for use with Java applications. A parser generator is a tool that reads
-a grammar specification and converts it to a Java program that can
-recognize matches to the grammar. In addition to the parser generator
-itself, JavaCC provides other standard capabilities related to parser
-generation such as tree building (via a tool called JJTree included
-with JavaCC), actions, debugging, etc.
+Java Compiler Compiler (JavaCC) is the most popular parser generator for use
+with Java applications. A parser generator is a tool that reads a grammar
+specification and converts it to a Java program that can recognize matches to
+the grammar. In addition to the parser generator itself, JavaCC provides other
+standard capabilities related to parser generation such as tree building (via
+a tool called JJTree included with JavaCC), actions, debugging, etc.
%package manual
-Summary: A Parser and Scanner Generator for Java
+Summary: Manual for %{name}
Group: Development/Libraries/Java
%description manual
-Java Compiler Compiler (JavaCC) is the most popular parser generator
-for use with Java applications. A parser generator is a tool that reads
-a grammar specification and converts it to a Java program that can
-recognize matches to the grammar. In addition to the parser generator
-itself, JavaCC provides other standard capabilities related to parser
-generation such as tree building (via a tool called JJTree included
-with JavaCC), actions, debugging, etc.
+Manual for %{name}.
%package demo
-Summary: A Parser and Scanner Generator for Java
+Summary: Examples for %{name}
Group: Development/Libraries/Java
+Requires: %{name} = %{version}-%{release}
%description demo
-Java Compiler Compiler (JavaCC) is the most popular parser generator
-for use with Java applications. A parser generator is a tool that reads
-a grammar specification and converts it to a Java program that can
-recognize matches to the grammar. In addition to the parser generator
-itself, JavaCC provides other standard capabilities related to parser
-generation such as tree building (via a tool called JJTree included
-with JavaCC), actions, debugging, etc.
+Examples for %{name}.
+
+%package javadoc
+Summary: Javadoc for %{name}
+Group: Development/Libraries/Java
+
+%description javadoc
+This package contains the API documentation for %{name}.
%prep
-%setup -q -n javacc
-%patch0 -p1
-cp %{SOURCE1} javacc
-cp %{SOURCE2} jjdoc
-cp %{SOURCE3} jjtree
-mv www/doc .
+%setup -q -n %{name}-%{version}
+
+# Remove binary information in the source tar
+find . -name "*.jar" -delete
+find . -name "*.class" -delete
+
+find ./examples -type f -exec sed -i 's/\r//' {} \;
%build
+build-jar-repository -p bootstrap javacc
+
+# There is maven pom which doesn't really work for building. The tests don't
+# work either (even when using bundled jars).
ant \
-Dant.build.javac.source=1.6 -Dant.build.javac.target=1.6 \
- -Dversion=%{version} \
- jar
+ jar javadoc
+
+# The pom dependencies are also wrong
+%mvn_artifact --skip-dependencies pom.xml target/javacc-%{version}.jar
%install
-install -d -m 755 %{buildroot}%{_javadir}
-install -m 644 bin/lib/%{name}.jar %{buildroot}%{_javadir}/%{name}-%{version}.jar
-ln -s %{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar
-install -d -m 755 %{buildroot}%{_prefix}/bin
-install -m 755 javacc jjdoc jjtree %{buildroot}%{_prefix}/bin
-install -d -m 755 %{buildroot}%{_datadir}/%{name}
-cp -pr examples %{buildroot}%{_datadir}/%{name}
-%fdupes -s %{buildroot}%{_datadir}/%{name}
+%mvn_file : %{name}
-%files
-%{_javadir}/*.jar
-%doc LICENSE README
-%defattr(0755,root,root,0755)
-%{_bindir}/*
+%mvn_install -J target/javadoc
+%fdupes -s %{buildroot}%{_javadocdir}
+%fdupes -s www
+%fdupes -s examples
+
+%jpackage_script javacc '' '' javacc javacc true
+ln -s %{_bindir}/javacc %{buildroot}%{_bindir}/javacc.sh
+%jpackage_script jjdoc '' '' javacc jjdoc true
+%jpackage_script jjtree '' '' javacc jjtree true
+
+%files -f .mfiles
+%license LICENSE
+%doc README
+%{_bindir}/javacc
+%{_bindir}/javacc.sh
+%{_bindir}/jjdoc
+%{_bindir}/jjtree
%files manual
-%doc doc/*
+%doc www/*
%files demo
-%{_datadir}/%{name}/
+%doc examples
+
+%files javadoc -f .mfiles-javadoc
+%license LICENSE
%changelog
diff --git a/jjdoc b/jjdoc
deleted file mode 100644
index 237f1c7..0000000
--- a/jjdoc
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# JJDoc script
-# JPackage Project
-
-# Source functions library
-if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
-else
- echo "Can't find function library, aborting"
- exit 1
-fi
-
-# Configuration
-MAIN_CLASS=jjdoc
-BASE_JARS="javacc.jar"
-
-# Set parameters
-set_jvm
-set_classpath $BASE_JARS
-set_flags $BASE_FLAGS
-set_options $BASE_OPTIONS
-
-# Let's start
-run "$@"
diff --git a/jjtree b/jjtree
deleted file mode 100644
index 9505e62..0000000
--- a/jjtree
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# JJTree script
-# JPackage Project
-
-# Source functions library
-if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
-else
- echo "Can't find function library, aborting"
- exit 1
-fi
-
-# Configuration
-MAIN_CLASS=jjtree
-BASE_JARS="javacc.jar"
-
-# Set parameters
-set_jvm
-set_classpath $BASE_JARS
-set_flags $BASE_FLAGS
-set_options $BASE_OPTIONS
-
-# Let's start
-run "$@"