diff --git a/.gitignore b/.gitignore
index bf6343e..b3d1149 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-/avro-1.6.2-CLEAN.tar.xz
+/avro-1.7.5-CLEAN.tar.xz
diff --git a/avro-1.6.2-pom.patch b/avro-1.6.2-pom.patch
deleted file mode 100644
index 98681d6..0000000
--- a/avro-1.6.2-pom.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -Naur avro-1.6.2/lang/java/avro/pom.xml avro-1.6.2-work/lang/java/avro/pom.xml
---- avro-1.6.2/lang/java/avro/pom.xml 2012-02-09 23:30:15.000000000 +0100
-+++ avro-1.6.2-work/lang/java/avro/pom.xml 2012-02-21 15:54:59.155998202 +0100
-@@ -42,26 +42,6 @@
-
-
-
--
--
-- com.thoughtworks.paranamer
-- paranamer-maven-plugin
-- ${paranamer.version}
--
--
-- paranamer-test
--
-- ${project.build.testSourceDirectory}
-- ${project.build.testOutputDirectory}
--
-- process-test-classes
--
-- generate
--
--
--
--
--
-
-
-
-diff -Naur avro-1.6.2/lang/java/pom.xml avro-1.6.2-work/lang/java/pom.xml
---- avro-1.6.2/lang/java/pom.xml 2012-02-09 23:30:15.000000000 +0100
-+++ avro-1.6.2-work/lang/java/pom.xml 2012-02-21 16:19:47.202001290 +0100
-@@ -73,12 +73,6 @@
- avro
- compiler
- maven-plugin
-- ipc
-- tools
-- mapred
-- protobuf
-- thrift
-- archetypes
-
-
-
-@@ -303,7 +297,7 @@
-
-
- junit
-- junit-dep
-+ junit
- ${junit.version}
- test
-
diff --git a/avro-ipc-changes-for-jetty-upgrade.patch b/avro-ipc-changes-for-jetty-upgrade.patch
new file mode 100644
index 0000000..53a1daf
--- /dev/null
+++ b/avro-ipc-changes-for-jetty-upgrade.patch
@@ -0,0 +1,235 @@
+From 5ab33e67b12812339749cb0989b5c5e442e0d776 Mon Sep 17 00:00:00 2001
+From: Peter MacKinnon
+Date: Fri, 11 Oct 2013 17:00:17 -0400
+Subject: [PATCH 4/4] ipc changes for jetty upgrade
+
+---
+ lang/java/ipc/pom.xml | 16 +++++++---
+ .../main/java/org/apache/avro/ipc/HttpServer.java | 36 ++++++++++++----------
+ .../org/apache/avro/ipc/stats/StaticServlet.java | 4 +--
+ .../org/apache/avro/ipc/stats/StatsServer.java | 10 +++---
+ .../org/apache/avro/ipc/trace/StaticServlet.java | 4 +--
+ .../org/apache/avro/ipc/trace/TracePlugin.java | 16 +++++-----
+ 6 files changed, 47 insertions(+), 39 deletions(-)
+
+diff --git a/lang/java/ipc/pom.xml b/lang/java/ipc/pom.xml
+index 343ed9c..91b3ddd 100644
+--- a/lang/java/ipc/pom.xml
++++ b/lang/java/ipc/pom.xml
+@@ -111,15 +111,21 @@
+ ${jackson.version}
+
+
+- org.mortbay.jetty
+- jetty
++ org.eclipse.jetty
++ jetty-server
++ ${jetty.version}
+
+
+- org.mortbay.jetty
++ org.eclipse.jetty
+ jetty-util
+ ${jetty.version}
+
+
++ org.eclipse.jetty
++ jetty-servlet
++ ${jetty.version}
++
++
+ io.netty
+ netty
+
+@@ -128,8 +134,8 @@
+ velocity
+
+
+- org.mortbay.jetty
+- servlet-api
++ javax.servlet
++ javax.servlet-api
+ ${jetty-servlet-api.version}
+
+
+diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java
+index be6bbb2..906e2b2 100644
+--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java
++++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java
+@@ -22,14 +22,13 @@ import java.io.IOException;
+
+ import org.apache.avro.AvroRuntimeException;
+
+-import org.mortbay.jetty.Connector;
+-import org.mortbay.jetty.nio.SelectChannelConnector;
+-import org.mortbay.jetty.servlet.Context;
+-import org.mortbay.jetty.servlet.ServletHolder;
++import org.eclipse.jetty.server.ServerConnector;
++import org.eclipse.jetty.servlet.ServletContextHandler;
++import org.eclipse.jetty.servlet.ServletHolder;
+
+ /** An HTTP-based RPC {@link Server}. */
+ public class HttpServer implements Server {
+- private org.mortbay.jetty.Server server;
++ private org.eclipse.jetty.server.Server server;
+
+ /** Constructs a server to run on the named port. */
+ public HttpServer(Responder responder, int port) throws IOException {
+@@ -48,38 +47,41 @@ public class HttpServer implements Server {
+
+ /** Constructs a server to run on the named port on the specified address. */
+ public HttpServer(ResponderServlet servlet, String bindAddress, int port) throws IOException {
+- this.server = new org.mortbay.jetty.Server();
+- SelectChannelConnector connector = new SelectChannelConnector();
+- connector.setLowResourceMaxIdleTime(10000);
++ this.server = new org.eclipse.jetty.server.Server();
++ ServerConnector connector = new ServerConnector(server);
++ connector.setSoLingerTime(10000);
+ connector.setAcceptQueueSize(128);
+- connector.setResolveNames(false);
+- connector.setUseDirectBuffers(false);
++ connector.setReuseAddress(false);
++ connector.setInheritChannel(false);
+ if (bindAddress != null) {
+ connector.setHost(bindAddress);
+ }
+ connector.setPort(port);
+ server.addConnector(connector);
+- new Context(server, "/").addServlet(new ServletHolder(servlet), "/*");
++ new ServletContextHandler(server, "/").addServlet(new ServletHolder(servlet), "/*");
+ }
+
+ /** Constructs a server to run with the given connector. */
+- public HttpServer(Responder responder, Connector connector) throws IOException {
++ public HttpServer(Responder responder, ServerConnector connector) throws IOException {
+ this(new ResponderServlet(responder), connector);
+ }
+
+ /** Constructs a server to run with the given connector. */
+- public HttpServer(ResponderServlet servlet, Connector connector) throws IOException {
+- this.server = new org.mortbay.jetty.Server();
++ public HttpServer(ResponderServlet servlet, ServerConnector connector) throws IOException {
++ this.server = new org.eclipse.jetty.server.Server();
+ server.addConnector(connector);
+- new Context(server, "/").addServlet(new ServletHolder(servlet), "/*");
++ new ServletContextHandler(server, "/").addServlet(new ServletHolder(servlet), "/*");
+ }
+
+- public void addConnector(Connector connector) {
++ public void addConnector(ServerConnector connector) {
+ server.addConnector(connector);
+ }
+
+ @Override
+- public int getPort() { return server.getConnectors()[0].getLocalPort(); }
++ public int getPort() {
++ ServerConnector connector = new ServerConnector(server);
++ return connector.getLocalPort();
++ }
+
+ @Override
+ public void close() {
+diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java
+index c079ec5..3308e8c 100644
+--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java
++++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java
+@@ -21,8 +21,8 @@ package org.apache.avro.ipc.stats;
+ import java.io.IOException;
+ import java.net.URL;
+
+-import org.mortbay.jetty.servlet.DefaultServlet;
+-import org.mortbay.resource.Resource;
++import org.eclipse.jetty.servlet.DefaultServlet;
++import org.eclipse.jetty.util.resource.Resource;
+
+ /**
+ * Very simple servlet class capable of serving static files.
+diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java
+index 3ae8ada..f3b0d3f 100644
+--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java
++++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java
+@@ -16,9 +16,9 @@ package org.apache.avro.ipc.stats;
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-import org.mortbay.jetty.Server;
+-import org.mortbay.jetty.servlet.Context;
+-import org.mortbay.jetty.servlet.ServletHolder;
++import org.eclipse.jetty.server.Server;
++import org.eclipse.jetty.servlet.ServletContextHandler;
++import org.eclipse.jetty.servlet.ServletHolder;
+
+ /* This is a server that displays live information from a StatsPlugin.
+ *
+@@ -38,10 +38,10 @@ public class StatsServer {
+ this.httpServer = new Server(port);
+ this.plugin = plugin;
+
+- Context staticContext = new Context(httpServer, "/static");
++ ServletContextHandler staticContext = new ServletContextHandler(httpServer, "/static");
+ staticContext.addServlet(new ServletHolder(new StaticServlet()), "/");
+
+- Context context = new Context(httpServer, "/");
++ ServletContextHandler context = new ServletContextHandler(httpServer, "/");
+ context.addServlet(new ServletHolder(new StatsServlet(plugin)), "/");
+
+ httpServer.start();
+diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/StaticServlet.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/StaticServlet.java
+index cdcf75c..259eb94 100644
+--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/StaticServlet.java
++++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/StaticServlet.java
+@@ -21,8 +21,8 @@ package org.apache.avro.ipc.trace;
+ import java.io.IOException;
+ import java.net.URL;
+
+-import org.mortbay.jetty.servlet.DefaultServlet;
+-import org.mortbay.resource.Resource;
++import org.eclipse.jetty.servlet.DefaultServlet;
++import org.eclipse.jetty.util.resource.Resource;
+
+ /**
+ * Very simple servlet class capable of serving static files.
+diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/TracePlugin.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/TracePlugin.java
+index f1a8fea..0719d8b 100644
+--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/TracePlugin.java
++++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/trace/TracePlugin.java
+@@ -35,10 +35,10 @@ import org.apache.avro.ipc.HttpServer;
+ import org.apache.avro.ipc.RPCContext;
+ import org.apache.avro.ipc.RPCPlugin;
+ import org.apache.avro.ipc.specific.SpecificResponder;
+-import org.mortbay.jetty.Server;
+-import org.mortbay.jetty.bio.SocketConnector;
+-import org.mortbay.jetty.servlet.Context;
+-import org.mortbay.jetty.servlet.ServletHolder;
++import org.eclipse.jetty.server.Server;
++import org.eclipse.jetty.server.ServerConnector;
++import org.eclipse.jetty.servlet.ServletContextHandler;
++import org.eclipse.jetty.servlet.ServletHolder;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+
+@@ -342,17 +342,17 @@ public class TracePlugin extends RPCPlugin {
+ */
+ protected void initializeClientServer() {
+ clientFacingServer = new Server();
+- Context staticContext = new Context(clientFacingServer, "/static");
++ ServletContextHandler staticContext = new ServletContextHandler(clientFacingServer, "/static");
+ staticContext.addServlet(new ServletHolder(new StaticServlet()), "/");
+- Context context = new Context(clientFacingServer, "/");
++ ServletContextHandler context = new ServletContextHandler(clientFacingServer, "/");
+ context.addServlet(new ServletHolder(new TraceClientServlet()), "/");
+ boolean connected = false;
+- SocketConnector socket = null;
++ ServerConnector socket = null;
+
+ // Keep trying ports until we can connect
+ while (!connected) {
+ try {
+- socket = new SocketConnector();
++ socket = new ServerConnector(clientFacingServer);
+ socket.setPort(clientPort);
+ clientFacingServer.addConnector(socket);
+ clientFacingServer.start();
+--
+1.8.3.1
+
diff --git a/avro.spec b/avro.spec
index 607683f..f378c2e 100644
--- a/avro.spec
+++ b/avro.spec
@@ -1,17 +1,16 @@
Name: avro
-Version: 1.6.2
-Release: 7%{?dist}
+Version: 1.7.5
+Release: 1%{?dist}
Summary: Data serialization system
Group: Development/Libraries
License: ASL 2.0
URL: http://avro.apache.org
-# svn export http://svn.apache.org/repos/asf/avro/tags/release-1.6.2/ avro-1.6.2
-# find avro-1.6.2/ -name '*.jar' -or -name '*.dll' -delete
-# tar cafJ avro-1.6.2-CLEAN.tar.xz avro-1.6.2
+# svn export http://svn.apache.org/repos/asf/avro/tags/release-1.7.5/ avro-1.7.5
+# find avro-1.7.5/ -name '*.jar' -or -name '*.dll' -delete
+# tar cafJ avro-1.7.5-CLEAN.tar.xz avro-1.7.5
Source0: avro-%{version}-CLEAN.tar.xz
-
-Patch0: avro-%{version}-pom.patch
+Patch0: avro-ipc-changes-for-jetty-upgrade.patch
BuildArch: noarch
@@ -19,10 +18,8 @@ BuildRequires: jpackage-utils
BuildRequires: java-devel
BuildRequires: maven-local
BuildRequires: maven-compiler-plugin
-BuildRequires: maven-install-plugin
BuildRequires: maven-jar-plugin
BuildRequires: maven-javadoc-plugin
-BuildRequires: maven-archetype-packaging
BuildRequires: maven-archetype-plugin
BuildRequires: maven-archetype-common
BuildRequires: maven-checkstyle-plugin
@@ -32,6 +29,9 @@ BuildRequires: jackson
BuildRequires: snappy-java
BuildRequires: paranamer
BuildRequires: slf4j
+BuildRequires: hadoop-client
+BuildRequires: hadoop-mapreduce
+BuildRequires: libthrift-java
Requires: jpackage-utils
Requires: java
@@ -53,6 +53,41 @@ Avro provides:
to read or write data files nor to use or implement RPC protocols. Code
generation as an optional optimization, only worth implementing for
statically typed languages.
+
+%package trevni
+Summary: Trevni Java
+Requires: avro-mapred
+
+%description trevni
+Trevni: A Column File Format
+
+%package ipc
+Summary: Apache Avro IPC
+
+%description ipc
+Avro inter-process communication components
+
+%package mapred
+Summary: Apache Avro Mapred API
+Requires: hadoop-client
+Requires: hadoop-mapreduce
+
+%description mapred
+An org.apache.hadoop.mapred compatible API for using Avro Serialization in Hadoop
+
+%package protobuf
+Summary: Apache Avro Protobuf Compatibility
+Requires: protobuf-java
+
+%description protobuf
+Permit serialization of Protobuf-generated classes as Avro data.
+
+%package thrift
+Summary: Apache Avro Thrift Compatibility
+Requires: libthrift-java
+
+%description thrift
+Permit serialization of Thrift-generated classes as Avro data.
%package javadoc
Summary: Javadocs for %{name}
@@ -64,51 +99,69 @@ This package contains the API documentation for %{name}.
%prep
%setup -q
-
%patch0 -p1
+# junit, versions, and no tools or archetypes module
+sed -i "s|2.0.1-alpha|2.0.5-alpha|" lang/java/pom.xml
+sed -i "s|6.1.26|9.0.3.v20130506|" lang/java/pom.xml
+sed -i "s|2.5-20081211|3.1.0|" lang/java/pom.xml
+sed -i "s|junit-dep|junit|" lang/java/pom.xml
+sed -i "s|tools||" lang/java/pom.xml
+# something wrong here with xmvn 0.5 for archetypes, mvn-rpmbuild doesn't fail
+sed -i "s|archetypes||" lang/java/pom.xml
+
+# Remove panamer plugin for test jar generation
+%pom_remove_plugin com.thoughtworks.paranamer:paranamer-maven-plugin lang/java/avro/pom.xml
+
+# Need explicit maven-artifact declaration
+%pom_add_dep org.apache.maven:maven-artifact lang/java/maven-plugin/pom.xml
+
+# Remove ipc tests from mapred
+%pom_remove_dep :avro-ipc lang/java/mapred/pom.xml
+%pom_add_dep org.apache.avro:avro-ipc:%{version} lang/java/mapred/pom.xml
+
+%mvn_package ":trevni-java" trevni
+%mvn_package ":trevni-core" trevni
+%mvn_package ":trevni-avro" trevni
+%mvn_package ":trevni-doc" __noinstall
+%mvn_package ":%{name}-ipc" ipc
+%mvn_package ":%{name}-mapred" mapred
+%mvn_package ":%{name}-protobuf" protobuf
+%mvn_package ":%{name}-thrift" thrift
+
%build
-# Tests run: 2601, Failures: 2, Errors: 0, Skipped: 0
-mvn-rpmbuild -Dmaven.test.skip=true install javadoc:aggregate
+
+%mvn_build -f -- -Dhadoop.version=2 -P hadoop2
%install
-install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
-install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir}
-install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}
-
-# JAR
-install -pm 644 lang/java/avro/target/avro-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}.jar
-install -pm 644 lang/java/maven-plugin/target/avro-maven-plugin-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-maven-plugin.jar
-install -pm 644 lang/java/compiler/target/avro-compiler-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-compiler.jar
-
-# POM
-install -pm 644 pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-toplevel.pom
-install -pm 644 lang/java/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-parent.pom
-install -pm 644 lang/java/avro/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}.pom
-install -pm 644 lang/java/compiler/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-compiler.pom
-install -pm 644 lang/java/maven-plugin/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-maven-plugin.pom
-
-# DEPMAP
-%add_maven_depmap JPP.%{name}-%{name}-toplevel.pom
-%add_maven_depmap JPP.%{name}-%{name}-parent.pom
-%add_maven_depmap JPP.%{name}-%{name}.pom %{name}/%{name}.jar
-%add_maven_depmap JPP.%{name}-%{name}-maven-plugin.pom %{name}/%{name}-maven-plugin.jar
-%add_maven_depmap JPP.%{name}-%{name}-compiler.pom %{name}/%{name}-compiler.jar
-
-# APIDOCS
-cp -rp target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}
-
-%files
-%{_mavenpomdir}/*
-%{_mavendepmapfragdir}/*
-%{_javadir}/%{name}/*
-%doc LICENSE.txt
-
-%files javadoc
-%{_javadocdir}/%{name}
-%doc LICENSE.txt
+%mvn_install
+
+%files -f .mfiles
+%doc LICENSE.txt NOTICE.txt README.txt
+
+%files trevni -f .mfiles-trevni
+%doc LICENSE.txt NOTICE.txt
+
+%files ipc -f .mfiles-ipc
+%doc LICENSE.txt NOTICE.txt
+
+%files mapred -f .mfiles-mapred
+%doc LICENSE.txt NOTICE.txt
+
+%files protobuf -f .mfiles-protobuf
+%doc LICENSE.txt NOTICE.txt
+
+%files thrift -f .mfiles-thrift
+%doc LICENSE.txt NOTICE.txt
+
+%files javadoc -f .mfiles-javadoc
+%doc LICENSE.txt NOTICE.txt
%changelog
+* Mon Oct 14 2013 Peter MacKinnon - 1.7.5-1
+- Updated to 1.7.5
+- Add mapred (hadoop2), ipc, trevni, thrift, protobuf artifacts
+
* Sat Aug 03 2013 Fedora Release Engineering - 1.6.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
diff --git a/sources b/sources
index 8ca3592..8bd3edd 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-796338962998d23265ee25749b599ef9 avro-1.6.2-CLEAN.tar.xz
+b59deb4df828e98860ff51e39688187f avro-1.7.5-CLEAN.tar.xz