diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e1fe2c2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/v30.1.tar.gz
diff --git a/.guava.metadata b/.guava.metadata
new file mode 100644
index 0000000..42dcd4f
--- /dev/null
+++ b/.guava.metadata
@@ -0,0 +1 @@
+2874ae9f3c910fde0aa66a576da7a05b02a417d3 SOURCES/v30.1.tar.gz
diff --git a/SOURCES/0001-Remove-multi-line-annotations.patch b/SOURCES/0001-Remove-multi-line-annotations.patch
new file mode 100644
index 0000000..df43f66
--- /dev/null
+++ b/SOURCES/0001-Remove-multi-line-annotations.patch
@@ -0,0 +1,343 @@
+From c5d3a8295d62ede99b5e4c7c6ef63c14819ec112 Mon Sep 17 00:00:00 2001
+From: Marian Koncek <mkoncek@redhat.com>
+Date: Mon, 18 Jan 2021 12:39:46 +0100
+Subject: [PATCH] Remove multi-line annotations
+
+---
+ .../guava/src/com/google/common/collect/CompactHashMap.java   | 2 --
+ .../guava/src/com/google/common/collect/CompactHashSet.java   | 2 --
+ android/guava/src/com/google/common/graph/Traverser.java      | 3 ---
+ android/guava/src/com/google/common/primitives/Doubles.java   | 4 ----
+ android/guava/src/com/google/common/primitives/Floats.java    | 4 ----
+ android/guava/src/com/google/common/primitives/Ints.java      | 4 ----
+ android/guava/src/com/google/common/primitives/Shorts.java    | 4 ----
+ .../src/com/google/common/util/concurrent/ClosingFuture.java  | 3 ---
+ .../common/util/concurrent/ListeningExecutorService.java      | 4 ----
+ guava/src/com/google/common/collect/CompactHashMap.java       | 2 --
+ guava/src/com/google/common/collect/CompactHashSet.java       | 2 --
+ guava/src/com/google/common/graph/Traverser.java              | 3 ---
+ guava/src/com/google/common/primitives/Doubles.java           | 4 ----
+ guava/src/com/google/common/primitives/Floats.java            | 4 ----
+ guava/src/com/google/common/primitives/Ints.java              | 4 ----
+ guava/src/com/google/common/primitives/Shorts.java            | 4 ----
+ .../src/com/google/common/util/concurrent/ClosingFuture.java  | 3 ---
+ .../common/util/concurrent/ListeningExecutorService.java      | 4 ----
+ 18 files changed, 60 deletions(-)
+
+diff --git a/android/guava/src/com/google/common/collect/CompactHashMap.java b/android/guava/src/com/google/common/collect/CompactHashMap.java
+index 69e1412..e6cba86 100644
+--- a/android/guava/src/com/google/common/collect/CompactHashMap.java
++++ b/android/guava/src/com/google/common/collect/CompactHashMap.java
+@@ -105,8 +105,6 @@ class CompactHashMap<K, V> extends AbstractMap<K, V> implements Serializable {
+    * Maximum allowed false positive probability of detecting a hash flooding attack given random
+    * input.
+    */
+-  (
+-      )
+   static final double HASH_FLOODING_FPP = 0.001;
+ 
+   /**
+diff --git a/android/guava/src/com/google/common/collect/CompactHashSet.java b/android/guava/src/com/google/common/collect/CompactHashSet.java
+index 43072b6..85debcd 100644
+--- a/android/guava/src/com/google/common/collect/CompactHashSet.java
++++ b/android/guava/src/com/google/common/collect/CompactHashSet.java
+@@ -122,8 +122,6 @@ class CompactHashSet<E> extends AbstractSet<E> implements Serializable {
+    * Maximum allowed false positive probability of detecting a hash flooding attack given random
+    * input.
+    */
+-  (
+-      )
+   static final double HASH_FLOODING_FPP = 0.001;
+ 
+   /**
+diff --git a/android/guava/src/com/google/common/graph/Traverser.java b/android/guava/src/com/google/common/graph/Traverser.java
+index 7a40bdd..2b3f60c 100644
+--- a/android/guava/src/com/google/common/graph/Traverser.java
++++ b/android/guava/src/com/google/common/graph/Traverser.java
+@@ -60,9 +60,6 @@ import java.util.Set;
+  * @since 23.1
+  */
+ 
+-(
+-    "Call forGraph or forTree, passing a lambda or a Graph with the desired edges (built with"
+-        + " GraphBuilder)")
+ public abstract class Traverser<N> {
+   private final SuccessorsFunction<N> successorFunction;
+ 
+diff --git a/android/guava/src/com/google/common/primitives/Doubles.java b/android/guava/src/com/google/common/primitives/Doubles.java
+index d99300b..2cab6b8 100644
+--- a/android/guava/src/com/google/common/primitives/Doubles.java
++++ b/android/guava/src/com/google/common/primitives/Doubles.java
+@@ -208,8 +208,6 @@ public final class Doubles extends DoublesMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static double min(double... array) {
+     checkArgument(array.length > 0);
+     double min = array[0];
+@@ -228,8 +226,6 @@ public final class Doubles extends DoublesMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static double max(double... array) {
+     checkArgument(array.length > 0);
+     double max = array[0];
+diff --git a/android/guava/src/com/google/common/primitives/Floats.java b/android/guava/src/com/google/common/primitives/Floats.java
+index 6166813..aa293dc 100644
+--- a/android/guava/src/com/google/common/primitives/Floats.java
++++ b/android/guava/src/com/google/common/primitives/Floats.java
+@@ -205,8 +205,6 @@ public final class Floats extends FloatsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static float min(float... array) {
+     checkArgument(array.length > 0);
+     float min = array[0];
+@@ -225,8 +223,6 @@ public final class Floats extends FloatsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static float max(float... array) {
+     checkArgument(array.length > 0);
+     float max = array[0];
+diff --git a/android/guava/src/com/google/common/primitives/Ints.java b/android/guava/src/com/google/common/primitives/Ints.java
+index 511ec2b..f7f5ce3 100644
+--- a/android/guava/src/com/google/common/primitives/Ints.java
++++ b/android/guava/src/com/google/common/primitives/Ints.java
+@@ -219,8 +219,6 @@ public final class Ints extends IntsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static int min(int... array) {
+     checkArgument(array.length > 0);
+     int min = array[0];
+@@ -240,8 +238,6 @@ public final class Ints extends IntsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static int max(int... array) {
+     checkArgument(array.length > 0);
+     int max = array[0];
+diff --git a/android/guava/src/com/google/common/primitives/Shorts.java b/android/guava/src/com/google/common/primitives/Shorts.java
+index f07c59d..7ebc7de 100644
+--- a/android/guava/src/com/google/common/primitives/Shorts.java
++++ b/android/guava/src/com/google/common/primitives/Shorts.java
+@@ -218,8 +218,6 @@ public final class Shorts extends ShortsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static short min(short... array) {
+     checkArgument(array.length > 0);
+     short min = array[0];
+@@ -239,8 +237,6 @@ public final class Shorts extends ShortsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static short max(short... array) {
+     checkArgument(array.length > 0);
+     short max = array[0];
+diff --git a/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java b/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+index f1d1250..ca89d9d 100644
+--- a/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
++++ b/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+@@ -1203,9 +1203,6 @@ public final class ClosingFuture<V> {
+    *           .closing(executor);
+    * }</pre>
+    */
+-  // TODO(cpovirk): Use simple name instead of fully qualified after we stop building with JDK 8.
+-  @com.google.errorprone.annotations.DoNotMock(
+-      "Use ClosingFuture.whenAllSucceed() or .whenAllComplete() instead.")
+   public static class Combiner {
+ 
+     private final CloseableList closeables = new CloseableList();
+diff --git a/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java b/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+index 241242a..6ada4e9 100644
+--- a/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
++++ b/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+@@ -32,10 +32,6 @@ import java.util.concurrent.TimeUnit;
+  * @author Chris Povirk
+  * @since 10.0
+  */
+-(
+-    "Use TestingExecutors.sameThreadScheduledExecutor, or wrap a real Executor from "
+-        + "java.util.concurrent.Executors with MoreExecutors.listeningDecorator")
+-
+ public interface ListeningExecutorService extends ExecutorService {
+   /**
+    * @return a {@code ListenableFuture} representing pending completion of the task
+diff --git a/guava/src/com/google/common/collect/CompactHashMap.java b/guava/src/com/google/common/collect/CompactHashMap.java
+index fbf1d4d..8a88a9f 100644
+--- a/guava/src/com/google/common/collect/CompactHashMap.java
++++ b/guava/src/com/google/common/collect/CompactHashMap.java
+@@ -109,8 +109,6 @@ class CompactHashMap<K, V> extends AbstractMap<K, V> implements Serializable {
+    * Maximum allowed false positive probability of detecting a hash flooding attack given random
+    * input.
+    */
+-  (
+-      )
+   static final double HASH_FLOODING_FPP = 0.001;
+ 
+   /**
+diff --git a/guava/src/com/google/common/collect/CompactHashSet.java b/guava/src/com/google/common/collect/CompactHashSet.java
+index 9f6b3b9..7237175 100644
+--- a/guava/src/com/google/common/collect/CompactHashSet.java
++++ b/guava/src/com/google/common/collect/CompactHashSet.java
+@@ -126,8 +126,6 @@ class CompactHashSet<E> extends AbstractSet<E> implements Serializable {
+    * Maximum allowed false positive probability of detecting a hash flooding attack given random
+    * input.
+    */
+-  (
+-      )
+   static final double HASH_FLOODING_FPP = 0.001;
+ 
+   /**
+diff --git a/guava/src/com/google/common/graph/Traverser.java b/guava/src/com/google/common/graph/Traverser.java
+index 7a40bdd..2b3f60c 100644
+--- a/guava/src/com/google/common/graph/Traverser.java
++++ b/guava/src/com/google/common/graph/Traverser.java
+@@ -60,9 +60,6 @@ import java.util.Set;
+  * @since 23.1
+  */
+ 
+-(
+-    "Call forGraph or forTree, passing a lambda or a Graph with the desired edges (built with"
+-        + " GraphBuilder)")
+ public abstract class Traverser<N> {
+   private final SuccessorsFunction<N> successorFunction;
+ 
+diff --git a/guava/src/com/google/common/primitives/Doubles.java b/guava/src/com/google/common/primitives/Doubles.java
+index 8317163..3b157ba 100644
+--- a/guava/src/com/google/common/primitives/Doubles.java
++++ b/guava/src/com/google/common/primitives/Doubles.java
+@@ -210,8 +210,6 @@ public final class Doubles extends DoublesMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static double min(double... array) {
+     checkArgument(array.length > 0);
+     double min = array[0];
+@@ -230,8 +228,6 @@ public final class Doubles extends DoublesMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static double max(double... array) {
+     checkArgument(array.length > 0);
+     double max = array[0];
+diff --git a/guava/src/com/google/common/primitives/Floats.java b/guava/src/com/google/common/primitives/Floats.java
+index 7578aa8..60a6da3 100644
+--- a/guava/src/com/google/common/primitives/Floats.java
++++ b/guava/src/com/google/common/primitives/Floats.java
+@@ -205,8 +205,6 @@ public final class Floats extends FloatsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static float min(float... array) {
+     checkArgument(array.length > 0);
+     float min = array[0];
+@@ -225,8 +223,6 @@ public final class Floats extends FloatsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static float max(float... array) {
+     checkArgument(array.length > 0);
+     float max = array[0];
+diff --git a/guava/src/com/google/common/primitives/Ints.java b/guava/src/com/google/common/primitives/Ints.java
+index f2a0cad..0e4ea1f 100644
+--- a/guava/src/com/google/common/primitives/Ints.java
++++ b/guava/src/com/google/common/primitives/Ints.java
+@@ -221,8 +221,6 @@ public final class Ints extends IntsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static int min(int... array) {
+     checkArgument(array.length > 0);
+     int min = array[0];
+@@ -242,8 +240,6 @@ public final class Ints extends IntsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static int max(int... array) {
+     checkArgument(array.length > 0);
+     int max = array[0];
+diff --git a/guava/src/com/google/common/primitives/Shorts.java b/guava/src/com/google/common/primitives/Shorts.java
+index f07c59d..7ebc7de 100644
+--- a/guava/src/com/google/common/primitives/Shorts.java
++++ b/guava/src/com/google/common/primitives/Shorts.java
+@@ -218,8 +218,6 @@ public final class Shorts extends ShortsMethodsForWeb {
+    *     the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static short min(short... array) {
+     checkArgument(array.length > 0);
+     short min = array[0];
+@@ -239,8 +237,6 @@ public final class Shorts extends ShortsMethodsForWeb {
+    *     in the array
+    * @throws IllegalArgumentException if {@code array} is empty
+    */
+-  (
+-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
+   public static short max(short... array) {
+     checkArgument(array.length > 0);
+     short max = array[0];
+diff --git a/guava/src/com/google/common/util/concurrent/ClosingFuture.java b/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+index 0a867aa..fdb3887 100644
+--- a/guava/src/com/google/common/util/concurrent/ClosingFuture.java
++++ b/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+@@ -1201,9 +1201,6 @@ public final class ClosingFuture<V> {
+    *           .closing(executor);
+    * }</pre>
+    */
+-  // TODO(cpovirk): Use simple name instead of fully qualified after we stop building with JDK 8.
+-  @com.google.errorprone.annotations.DoNotMock(
+-      "Use ClosingFuture.whenAllSucceed() or .whenAllComplete() instead.")
+   public static class Combiner {
+ 
+     private final CloseableList closeables = new CloseableList();
+diff --git a/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java b/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+index 241242a..6ada4e9 100644
+--- a/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
++++ b/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+@@ -32,10 +32,6 @@ import java.util.concurrent.TimeUnit;
+  * @author Chris Povirk
+  * @since 10.0
+  */
+-(
+-    "Use TestingExecutors.sameThreadScheduledExecutor, or wrap a real Executor from "
+-        + "java.util.concurrent.Executors with MoreExecutors.listeningDecorator")
+-
+ public interface ListeningExecutorService extends ExecutorService {
+   /**
+    * @return a {@code ListenableFuture} representing pending completion of the task
+-- 
+2.29.2
+
diff --git a/SPECS/guava.spec b/SPECS/guava.spec
new file mode 100644
index 0000000..5169904
--- /dev/null
+++ b/SPECS/guava.spec
@@ -0,0 +1,306 @@
+%bcond_with bootstrap
+
+Name:           guava
+Version:        30.1
+Release:        5%{?dist}
+Summary:        Google Core Libraries for Java
+# Most of the code is under ASL 2.0
+# Few classes are under CC0, grep for creativecommons
+License:        ASL 2.0 and CC0
+URL:            https://github.com/google/guava
+BuildArch:      noarch
+
+Source0:        https://github.com/google/guava/archive/v%{version}.tar.gz
+
+Patch1:         0001-Remove-multi-line-annotations.patch
+
+BuildRequires:  maven-local-openjdk8
+%if %{with bootstrap}
+BuildRequires:  javapackages-bootstrap
+%else
+BuildRequires:  %{?module_prefix}mvn(com.google.code.findbugs:jsr305)
+BuildRequires:  mvn(junit:junit)
+BuildRequires:  mvn(org.apache.felix:maven-bundle-plugin)
+BuildRequires:  mvn(org.apache.maven.plugins:maven-enforcer-plugin)
+%endif
+
+%description
+Guava is a suite of core and expanded libraries that include
+utility classes, Google’s collections, io classes, and much
+much more.
+This project is a complete packaging of all the Guava libraries
+into a single jar.  Individual portions of Guava can be used
+by downloading the appropriate module and its dependencies.
+
+%{?javadoc_package}
+
+%package testlib
+Summary:        The guava-testlib artifact
+
+%description testlib
+guava-testlib provides additional functionality for conveninent unit testing
+
+%prep
+%setup -q
+
+find . -name '*.jar' -delete
+
+%pom_remove_parent guava-bom
+
+%pom_disable_module guava-gwt
+%pom_disable_module guava-tests
+
+%pom_xpath_inject pom:modules "<module>futures/failureaccess</module>"
+%pom_xpath_inject pom:parent "<relativePath>../..</relativePath>" futures/failureaccess
+%pom_xpath_set pom:parent/pom:version %{version}-jre futures/failureaccess
+
+%pom_remove_plugin -r :animal-sniffer-maven-plugin
+# Downloads JDK source for doc generation
+%pom_remove_plugin :maven-dependency-plugin guava
+
+%pom_remove_dep :caliper guava-tests
+
+%mvn_package :guava-parent guava
+
+# javadoc generation fails due to strict doclint in JDK 1.8.0_45
+%pom_remove_plugin -r :maven-javadoc-plugin
+
+%pom_xpath_inject /pom:project/pom:build/pom:plugins/pom:plugin/pom:configuration/pom:instructions "<_nouses>true</_nouses>" guava/pom.xml
+
+%pom_remove_dep -r :error_prone_annotations
+%pom_remove_dep -r :j2objc-annotations
+%pom_remove_dep -r org.checkerframework:
+%pom_remove_dep -r :listenablefuture
+
+annotations=$(
+    find -name '*.java' \
+    | xargs fgrep -h \
+        -e 'import com.google.j2objc.annotations' \
+        -e 'import com.google.errorprone.annotation' \
+        -e 'import com.google.errorprone.annotations' \
+        -e 'import com.google.common.annotations' \
+        -e 'import org.codehaus.mojo.animal_sniffer' \
+        -e 'import org.checkerframework' \
+    | sort -u \
+    | sed 's/.*\.\([^.]*\);/\1/' \
+    | paste -sd\|
+)
+
+# guava started using quite a few annotation libraries for code quality, which
+# we don't have. This ugly regex is supposed to remove their usage from the code
+find -name '*.java' | xargs sed -ri \
+    "s/^import .*\.($annotations);//;s/@($annotations)"'\>\s*(\((("[^"]*")|([^)]*))\))?//g'
+
+%patch1 -p1
+
+%mvn_package "com.google.guava:failureaccess" guava
+
+%mvn_package "com.google.guava:guava-bom" __noinstall
+
+%build
+# Tests fail on Koji due to insufficient memory,
+# see https://bugzilla.redhat.com/show_bug.cgi?id=1332971
+%mvn_build -s -f
+
+%install
+%mvn_install
+
+%files -f .mfiles-guava
+%doc CONTRIBUTORS README*
+%license COPYING
+
+%files testlib -f .mfiles-guava-testlib
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 30.1-5
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Wed Jun 09 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 30.1-4
+- Rebuild to workaround DistroBaker issue
+
+* Tue Jun 08 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 30.1-3
+- Bootstrap Maven for CentOS Stream 9
+
+* Mon May 17 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 30.1-2
+- Bootstrap build
+- Non-bootstrap build
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Tue Jan 26 2021 Marian Koncek <mkoncek@redhat.com> - 30.1-1
+- Update to upstream version 30.1
+
+* Fri Sep 18 2020 Marian Koncek <mkoncek@redhat.com> - 29.0-1
+- Update to upstream version 29.0
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri Jul 10 2020 Jiri Vanek <jvanek@redhat.com> - 25.0-8
+- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
+
+* Wed Feb 19 2020 Fabio Valentini <decathorpe@gmail.com> - 25.0-7
+- Drop unnecessary dependency on parent POM.
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Sat Jan 25 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 28.2-2
+- Build with OpenJDK 8
+
+* Fri Jan 24 2020 Marian Koncek <mkoncek@redhat.com> - 28.2-1
+- Update to upstream version 28.2
+
+* Tue Nov 05 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 28.1-2
+- Mass rebuild for javapackages-tools 201902
+
+* Mon Sep 02 2019 Marian Koncek <mkoncek@redhat.com> - 28.1-1
+- Update to upstream version 28.1
+
+* Thu Aug 01 2019 Marian Koncek <mkoncek@redhat.com> - 28.0-1
+- Update to upstream version 28.0
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Fri May 24 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 25.0-4
+- Mass rebuild for javapackages-tools 201901
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Fri Aug 03 2018 Michael Simacek <msimacek@redhat.com> - 25.0-3
+- Fix license tag to include CC0
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 25.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed May 02 2018 Michael Simacek <msimacek@redhat.com> - 25.0-1
+- Update to upstream version 25.0
+
+* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 24.0-2
+- Escape macros in %%changelog
+
+* Mon Feb 05 2018 Michael Simacek <msimacek@redhat.com> - 24.0-1
+- Update to upstream version 24.0
+
+* Mon Nov 06 2017 Michael Simacek <msimacek@redhat.com> - 20.0-1
+- Update to upstream version 20.0
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 18.0-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 18.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Oct 10 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 18.0-9
+- Allow conditional builds without testlib
+
+* Thu Jun 16 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 18.0-8
+- Cleanup package
+
+* Tue May 10 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 18.0-7
+- Disable tests due to insufficient memory on Koji
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 18.0-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Wed Jun 22 2015 Noa Resare <noa@resare.com> - 18.0-5
+- enable module guava-testlib
+- enable tests in guava-testlib
+- backport fix to HashMap related test from 19.0-SNAPSHOT
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 18.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Thu May 14 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 18.0-3
+- Remove maven-javadoc-plugin execution
+
+* Fri Feb  6 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 18.0-2
+- Update upstream website URL
+
+* Wed Jan  7 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 18.0-1
+- Update to v. 18 (#1175401)
+- Use %%license
+
+* Wed Oct  8 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 17.0-2
+- Add alias for com.google.guava:guava-jdk5
+
+* Fri Jun 20 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 17.0-1
+- Add patch for Java 8
+
+* Tue Jun 17 2014 Roland Grunberg <rgrunber@redhat.com> - 15.0-4
+- Do not generate uses directive for exports.
+
+* Fri Jun 13 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> 17.0-1
+- Update to latest upstream version (#1109442).
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 15.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Tue Mar 04 2014 Stanislav Ochotnicky <sochotnicky@redhat.com> - 15.0-2
+- Use Requires: java-headless rebuild (#1067528)
+
+* Wed Jan  8 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 15.0-1
+- Update to upstream version 15.0
+
+* Mon Aug 12 2013 gil cattaneo <puntogil@libero.it> 13.0-6
+- fix rhbz#992456
+- update to current packaging guidelines
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 13.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Fri Jun 28 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 13.0-4
+- Replace BR on ant-nodeps with ant
+
+* Fri Jun 28 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 13.0-4
+- Rebuild to regenerate API documentation
+- Resolves: CVE-2013-1571
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 13.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Feb 06 2013 Java SIG <java-devel@lists.fedoraproject.org> - 13.0-2
+- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild
+- Replace maven BuildRequires with maven-local
+
+* Tue Aug  7 2012 Mikolaj Izdebski <mizdebsk@redhat.com> - 13.0-1
+- Update to upstream version 13.0
+- Remove RPM bug workaround
+- Convert patches to pom macros
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 11.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sat Apr 28 2012 gil cattaneo <puntogil@libero.it> 11.0.2-1
+- Update to 11.0.2
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 09-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Mon Sep 12 2011 Stanislav Ochotnicky <sochotnicky@redhat.com> - 09-1
+- Update to 09
+- Packaging fixes
+- Build with maven
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 05-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Wed Jul 14 2010 Hui wang <huwang@redhat.com> - 05-4
+- Patch pom
+
+* Fri Jun 18 2010 Hui Wang <huwang@redhat.com> - 05-3
+- Fixed jar name in install section
+- Removed spaces in description
+
+* Thu Jun 17 2010 Hui Wang <huwang@redhat.com> - 05-2
+- Fixed summary
+- Fixed description
+- Fixed creating symlink insturctions
+- add depmap
+
+* Thu Jun 10 2010 Hui Wang <huwang@redhat.com> - 05-1
+- Initial version of the package