Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package netty for openSUSE:Factory checked in at 2021-03-15 10:54:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/netty (Old) and /work/SRC/openSUSE:Factory/.netty.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "netty" Mon Mar 15 10:54:28 2021 rev:5 rq:878593 version:4.1.60 Changes: -------- --- /work/SRC/openSUSE:Factory/netty/netty.changes 2021-02-15 23:17:20.535489182 +0100 +++ /work/SRC/openSUSE:Factory/.netty.new.2401/netty.changes 2021-03-15 10:54:29.969180848 +0100 @@ -1,0 +2,48 @@ +Fri Mar 12 08:31:56 UTC 2021 - Fridrich Strba <fst...@suse.com> + +- Upgrade to latest upstream version 4.1.60 + * fixes: bsc#1183262, CVE-2021-21295: HTTP/2 request + Content-Length header field is not validated by + 'Http2MultiplexHandler' +- Modified patches: + * 0001-Remove-optional-dep-Blockhound.patch + * 0002-Remove-optional-dep-conscrypt.patch + * 0003-Remove-optional-deps-jetty-alpn-and-npn.patch + * 0004-Remove-optional-dep-tcnative.patch + * 0005-Remove-optional-dep-log4j.patch + * 0006-revert-Fix-native-image-build.patch + + rediff to changed context +- Added patch: + * 0007-Revert-Support-session-cache-for-client-and-server-w.patch + + revert optional disabled cache implementation that conflicts + with our 0004-Remove-optional-dep-tcnative.patch + +------------------------------------------------------------------- +Thu Feb 11 12:00:22 UTC 2021 - Fridrich Strba <fst...@suse.com> + +- Upgrade to latest upstream version 4.1.59 +- Removed patches: + * netty-CVE-2020-11612.patch + * netty-CVE-2021-21290.patch + + fixes integrated in the upstream sources + * 0001-Remove-OpenSSL-parts-depending-on-tcnative.patch + * 0002-Remove-NPN.patch + * 0003-Remove-conscrypt-ALPN.patch + * 0004-Remove-jetty-ALPN.patch + + replaced by new patches +- Added patches: + * 0001-Remove-optional-dep-Blockhound.patch + * 0002-Remove-optional-dep-conscrypt.patch + * 0003-Remove-optional-deps-jetty-alpn-and-npn.patch + * 0004-Remove-optional-dep-tcnative.patch + * 0005-Remove-optional-dep-log4j.patch + + remove various optional dependencies that we do not need + * 0006-revert-Fix-native-image-build.patch + + Revert changes that introduce a new dependency that we + do not have + * no-werror.patch + + Do not treat warnings as errors +- Build -poms and -javadoc as noarch packages, since they do not + install anything in arch-dependent directories + +------------------------------------------------------------------- Old: ---- 0001-Remove-OpenSSL-parts-depending-on-tcnative.patch 0002-Remove-NPN.patch 0003-Remove-conscrypt-ALPN.patch 0004-Remove-jetty-ALPN.patch netty-4.1.13.Final.tar.gz netty-CVE-2020-11612.patch netty-CVE-2021-21290.patch New: ---- 0001-Remove-optional-dep-Blockhound.patch 0002-Remove-optional-dep-conscrypt.patch 0003-Remove-optional-deps-jetty-alpn-and-npn.patch 0004-Remove-optional-dep-tcnative.patch 0005-Remove-optional-dep-log4j.patch 0006-revert-Fix-native-image-build.patch 0007-Revert-Support-session-cache-for-client-and-server-w.patch netty-4.1.60.Final.tar.gz no-werror.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ netty.spec ++++++ --- /var/tmp/diff_new_pack.xSDTNW/_old 2021-03-15 10:54:30.881182248 +0100 +++ /var/tmp/diff_new_pack.xSDTNW/_new 2021-03-15 10:54:30.885182254 +0100 @@ -16,12 +16,10 @@ # -%global debug_package %{nil} %global namedreltag .Final %global namedversion %{version}%{?namedreltag} -%bcond_without jp_minimal Name: netty -Version: 4.1.13 +Version: 4.1.60 Release: 0 Summary: An asynchronous event-driven network application framework and tools for Java License: Apache-2.0 @@ -31,39 +29,35 @@ # We don't have the plugin and want to avoid groovy dependency # This script is written in bash+sed and performs the same task Source1: codegen.bash -Patch0: 0001-Remove-OpenSSL-parts-depending-on-tcnative.patch -Patch1: 0002-Remove-NPN.patch -Patch2: 0003-Remove-conscrypt-ALPN.patch -Patch3: 0004-Remove-jetty-ALPN.patch -Patch4: netty-CVE-2020-11612.patch -Patch5: netty-CVE-2021-21290.patch +Patch0: 0001-Remove-optional-dep-Blockhound.patch +Patch1: 0002-Remove-optional-dep-conscrypt.patch +Patch2: 0003-Remove-optional-deps-jetty-alpn-and-npn.patch +Patch3: 0004-Remove-optional-dep-tcnative.patch +Patch4: 0005-Remove-optional-dep-log4j.patch +Patch5: 0006-revert-Fix-native-image-build.patch +Patch6: 0007-Revert-Support-session-cache-for-client-and-server-w.patch +Patch7: no-werror.patch +BuildRequires: fdupes +BuildRequires: gcc +BuildRequires: make BuildRequires: maven-local BuildRequires: mvn(ant-contrib:ant-contrib) BuildRequires: mvn(com.jcraft:jzlib) BuildRequires: mvn(commons-logging:commons-logging) +BuildRequires: mvn(io.netty:netty-jni-util::sources:) BuildRequires: mvn(kr.motd.maven:os-maven-plugin) BuildRequires: mvn(log4j:log4j:1.2.17) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-remote-resources-plugin) +BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on) BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) BuildRequires: mvn(org.codehaus.mojo:exec-maven-plugin) BuildRequires: mvn(org.fusesource.hawtjni:maven-hawtjni-plugin) BuildRequires: mvn(org.javassist:javassist) BuildRequires: mvn(org.jctools:jctools-core) BuildRequires: mvn(org.slf4j:slf4j-api) -BuildRequires: mvn(org.sonatype.oss:oss-parent:pom:) -%if %{without jp_minimal} -BuildRequires: mvn(com.fasterxml:aalto-xml) -BuildRequires: mvn(com.github.jponge:lzma-java) -BuildRequires: mvn(com.ning:compress-lzf) -BuildRequires: mvn(net.jpountz.lz4:lz4) -BuildRequires: mvn(org.apache.logging.log4j:log4j-api) -BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on) -BuildRequires: mvn(org.eclipse.jetty.alpn:alpn-api) -BuildRequires: mvn(org.jboss.marshalling:jboss-marshalling) -%endif %description Netty is a NIO client server framework which enables quick and easy @@ -81,12 +75,14 @@ %package poms Summary: POM-only artifacts for %{name} +BuildArch: noarch %description poms %{summary}. %package javadoc Summary: API documentation for %{name} +BuildArch: noarch %description javadoc %{summary}. @@ -97,25 +93,20 @@ %patch0 -p1 %patch1 -p1 %patch2 -p1 -%if %{with jp_minimal} %patch3 -p1 -%endif %patch4 -p1 %patch5 -p1 +%patch6 -p1 +%patch7 -p1 + +# remove unnecessary dependency on parent POM +%pom_remove_parent . bom dev-tools + +# Disable all in one jar +%pom_disable_module all -# Missing Mavenized rxtx -%pom_disable_module "transport-rxtx" -%pom_remove_dep ":netty-transport-rxtx" all -# Missing com.barchart.udt:barchart-udt-bundle:jar:2.3.0 -%pom_disable_module "transport-udt" -%pom_remove_dep ":netty-transport-udt" all -%pom_remove_dep ":netty-build" all -# Not needed +# Not needed for RPM builds %pom_disable_module "example" -%pom_remove_dep ":netty-example" all -%pom_disable_module "testsuite" -%pom_disable_module "testsuite-autobahn" -%pom_disable_module "testsuite-osgi" %pom_disable_module "tarball" %pom_disable_module "microbench" @@ -130,8 +121,8 @@ %pom_remove_plugin :maven-antrun-plugin %pom_remove_plugin :maven-dependency-plugin -# style checker %pom_remove_plugin :xml-maven-plugin +%pom_remove_plugin :japicmp-maven-plugin %pom_remove_plugin -r :maven-checkstyle-plugin %pom_remove_plugin -r :animal-sniffer-maven-plugin %pom_remove_plugin -r :maven-enforcer-plugin @@ -162,43 +153,51 @@ ' %pom_remove_plugin :groovy-maven-plugin common -# The protobuf-javanano API was discontinued upstream and obsoleted in Fedora +# We don't have com.oracle.substratevm +%pom_remove_dep "com.oracle.substratevm:" common +rm common/src/main/java/io/netty/util/internal/svm/* + +# The protobuf-javanano API was discontinued upstream # so disable support for protobuf in the codecs module %pom_remove_dep -r "com.google.protobuf:protobuf-java" %pom_remove_dep -r "com.google.protobuf.nano:protobuf-javanano" rm codec/src/main/java/io/netty/handler/codec/protobuf/* sed -i '/import.*protobuf/d' codec/src/main/java/io/netty/handler/codec/DatagramPacket*.java -%if %{with jp_minimal} %pom_remove_dep -r "org.jboss.marshalling:jboss-marshalling" rm codec/src/main/java/io/netty/handler/codec/marshalling/* -%pom_remove_dep -r org.bouncycastle -rm handler/src/main/java/io/netty/handler/ssl/util/BouncyCastleSelfSignedCertGenerator.java -sed -i '/BouncyCastleSelfSignedCertGenerator/s/.*/throw new UnsupportedOperationException();/' \ - handler/src/main/java/io/netty/handler/ssl/util/SelfSignedCertificate.java -%pom_remove_dep -r com.fasterxml:aalto-xml -%pom_disable_module codec-xml -%pom_remove_dep :netty-codec-xml all + +# Various compression codecs %pom_remove_dep -r com.github.jponge:lzma-java rm codec/src/*/java/io/netty/handler/codec/compression/Lzma*.java %pom_remove_dep -r com.ning:compress-lzf rm codec/src/*/java/io/netty/handler/codec/compression/Lzf*.java %pom_remove_dep -r net.jpountz.lz4:lz4 rm codec/src/*/java/io/netty/handler/codec/compression/Lz4*.java -%pom_remove_dep -r org.apache.logging.log4j: -rm common/*/main/java/io/netty/util/internal/logging/Log4J2*.java -# Disable rarely needed native artifacts +# Disable other codecs with extra dependencies +%pom_remove_dep -r com.fasterxml:aalto-xml +%pom_disable_module codec-xml + +# Disable unneeded transport artifacts %pom_disable_module transport-native-epoll %pom_disable_module transport-native-kqueue -%pom_remove_dep :netty-transport-native-epoll all -%pom_remove_dep :netty-transport-native-kqueue all -%endif # jp_minimal - -sed -i 's|taskdef|taskdef classpathref="maven.plugin.classpath"|' all/pom.xml - -%pom_xpath_inject "pom:plugins/pom:plugin[pom:artifactId = 'maven-antrun-plugin']" '<dependencies><dependency><groupId>ant-contrib</groupId><artifactId>ant-contrib</artifactId><version>1.0b3</version></dependency></dependencies>' all/pom.xml -%pom_xpath_inject "pom:execution[pom:id = 'build-native-lib']/pom:configuration" '<verbose>true</verbose>' transport-native-epoll/pom.xml +%pom_disable_module transport-rxtx +%pom_disable_module transport-sctp +%pom_disable_module transport-udt + +# Disable macos native bit +%pom_disable_module resolver-dns-native-macos + +# Disable test suites +%pom_disable_module testsuite +%pom_disable_module testsuite-autobahn +%pom_disable_module testsuite-http2 +%pom_disable_module testsuite-native +%pom_disable_module testsuite-native-image +%pom_disable_module testsuite-osgi +%pom_disable_module testsuite-shading +%pom_disable_module transport-native-unix-common-tests # Upstream has jctools bundled. %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId = 'maven-bundle-plugin']/pom:executions/pom:execution[pom:id = 'generate-manifest']/pom:configuration/pom:instructions/pom:Import-Package" common/pom.xml @@ -214,13 +213,11 @@ %{mvn_package} ':*-tests' __noinstall %build -# Ensure we use distro compile flags -export CFLAGS="%{optflags}" LDFLAGS="$RPM_LD_FLAGS" - -%{mvn_build} -f +%{mvn_build} -f -- -Dsource=8 %install %mvn_install +%fdupes -s %{buildroot}%{_javadocdir} %files -f .mfiles %license LICENSE.txt NOTICE.txt ++++++ 0001-Remove-optional-dep-Blockhound.patch ++++++ ++++ 954 lines (skipped) ++++++ 0002-Remove-optional-dep-conscrypt.patch ++++++ >From 6cff9f609fec2864e5f17aedb8c4b7110b5b66bb Mon Sep 17 00:00:00 2001 From: Mat Booth <mat.bo...@redhat.com> Date: Mon, 7 Sep 2020 13:24:30 +0100 Subject: [PATCH 2/7] Remove optional dep conscrypt --- handler/pom.xml | 6 - .../java/io/netty/handler/ssl/Conscrypt.java | 75 ------- .../handler/ssl/ConscryptAlpnSslEngine.java | 196 ------------------ .../JdkAlpnApplicationProtocolNegotiator.java | 8 +- .../java/io/netty/handler/ssl/SslHandler.java | 47 +---- pom.xml | 10 - 6 files changed, 2 insertions(+), 340 deletions(-) delete mode 100644 handler/src/main/java/io/netty/handler/ssl/Conscrypt.java delete mode 100644 handler/src/main/java/io/netty/handler/ssl/ConscryptAlpnSslEngine.java diff --git a/handler/pom.xml b/handler/pom.xml index bb93416837..8bd2ba0774 100644 --- a/handler/pom.xml +++ b/handler/pom.xml @@ -81,12 +81,6 @@ <artifactId>alpn-api</artifactId> <optional>true</optional> </dependency> - <dependency> - <groupId>${conscrypt.groupId}</groupId> - <artifactId>${conscrypt.artifactId}</artifactId> - <classifier>${conscrypt.classifier}</classifier> - <optional>true</optional> - </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> diff --git a/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java b/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java deleted file mode 100644 index c5af3fd39a..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2017 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ -package io.netty.handler.ssl; - -import io.netty.util.internal.PlatformDependent; - -import javax.net.ssl.SSLEngine; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * Contains methods that can be used to detect if conscrypt is usable. - */ -final class Conscrypt { - // This class exists to avoid loading other conscrypt related classes using features only available in JDK8+, - // because we need to maintain JDK6+ runtime compatibility. - private static final Method IS_CONSCRYPT_SSLENGINE; - - static { - Method isConscryptSSLEngine = null; - - if ((PlatformDependent.javaVersion() >= 8 && - // Only works on Java14 and earlier for now - // See https://github.com/google/conscrypt/issues/838 - PlatformDependent.javaVersion() < 15) || PlatformDependent.isAndroid()) { - try { - Class<?> providerClass = Class.forName("org.conscrypt.OpenSSLProvider", true, - PlatformDependent.getClassLoader(ConscryptAlpnSslEngine.class)); - providerClass.newInstance(); - - Class<?> conscryptClass = Class.forName("org.conscrypt.Conscrypt", true, - PlatformDependent.getClassLoader(ConscryptAlpnSslEngine.class)); - isConscryptSSLEngine = conscryptClass.getMethod("isConscrypt", SSLEngine.class); - } catch (Throwable ignore) { - // ignore - } - } - IS_CONSCRYPT_SSLENGINE = isConscryptSSLEngine; - } - - /** - * Indicates whether or not conscrypt is available on the current system. - */ - static boolean isAvailable() { - return IS_CONSCRYPT_SSLENGINE != null; - } - - /** - * Returns {@code true} if the passed in {@link SSLEngine} is handled by Conscrypt, {@code false} otherwise. - */ - static boolean isEngineSupported(SSLEngine engine) { - try { - return IS_CONSCRYPT_SSLENGINE != null && (Boolean) IS_CONSCRYPT_SSLENGINE.invoke(null, engine); - } catch (IllegalAccessException ignore) { - return false; - } catch (InvocationTargetException ex) { - throw new RuntimeException(ex); - } - } - - private Conscrypt() { } -} diff --git a/handler/src/main/java/io/netty/handler/ssl/ConscryptAlpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/ConscryptAlpnSslEngine.java deleted file mode 100644 index 3bc955ca09..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/ConscryptAlpnSslEngine.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2017 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ -package io.netty.handler.ssl; - -import static io.netty.handler.ssl.SslUtils.toSSLHandshakeException; -import static io.netty.util.internal.ObjectUtil.checkNotNull; -import static java.lang.Math.min; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufAllocator; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; -import java.nio.ByteBuffer; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLEngineResult; -import javax.net.ssl.SSLException; - -import io.netty.util.internal.SystemPropertyUtil; -import org.conscrypt.AllocatedBuffer; -import org.conscrypt.BufferAllocator; -import org.conscrypt.Conscrypt; -import org.conscrypt.HandshakeListener; - -/** - * A {@link JdkSslEngine} that uses the Conscrypt provider or SSL with ALPN. - */ -abstract class ConscryptAlpnSslEngine extends JdkSslEngine { - private static final boolean USE_BUFFER_ALLOCATOR = SystemPropertyUtil.getBoolean( - "io.netty.handler.ssl.conscrypt.useBufferAllocator", true); - - static ConscryptAlpnSslEngine newClientEngine(SSLEngine engine, ByteBufAllocator alloc, - JdkApplicationProtocolNegotiator applicationNegotiator) { - return new ClientEngine(engine, alloc, applicationNegotiator); - } - - static ConscryptAlpnSslEngine newServerEngine(SSLEngine engine, ByteBufAllocator alloc, - JdkApplicationProtocolNegotiator applicationNegotiator) { - return new ServerEngine(engine, alloc, applicationNegotiator); - } - - private ConscryptAlpnSslEngine(SSLEngine engine, ByteBufAllocator alloc, List<String> protocols) { - super(engine); - - // Configure the Conscrypt engine to use Netty's buffer allocator. This is a trade-off of memory vs - // performance. - // - // If no allocator is provided, the engine will internally allocate a direct buffer of max packet size in - // order to optimize JNI calls (this happens the first time it is provided a non-direct buffer from the - // application). - // - // Alternatively, if an allocator is provided, no internal buffer will be created and direct buffers will be - // retrieved from the allocator on-demand. - if (USE_BUFFER_ALLOCATOR) { - Conscrypt.setBufferAllocator(engine, new BufferAllocatorAdapter(alloc)); - } - - // Set the list of supported ALPN protocols on the engine. - Conscrypt.setApplicationProtocols(engine, protocols.toArray(new String[0])); - } - - /** - * Calculates the maximum size of the encrypted output buffer required to wrap the given plaintext bytes. Assumes - * as a worst case that there is one TLS record per buffer. - * - * @param plaintextBytes the number of plaintext bytes to be wrapped. - * @param numBuffers the number of buffers that the plaintext bytes are spread across. - * @return the maximum size of the encrypted output buffer required for the wrap operation. - */ - final int calculateOutNetBufSize(int plaintextBytes, int numBuffers) { - // Assuming a max of one frame per component in a composite buffer. - long maxOverhead = (long) Conscrypt.maxSealOverhead(getWrappedEngine()) * numBuffers; - // TODO(nmittler): update this to use MAX_ENCRYPTED_PACKET_LENGTH instead of Integer.MAX_VALUE - return (int) min(Integer.MAX_VALUE, plaintextBytes + maxOverhead); - } - - final SSLEngineResult unwrap(ByteBuffer[] srcs, ByteBuffer[] dests) throws SSLException { - return Conscrypt.unwrap(getWrappedEngine(), srcs, dests); - } - - private static final class ClientEngine extends ConscryptAlpnSslEngine { - private final ProtocolSelectionListener protocolListener; - - ClientEngine(SSLEngine engine, ByteBufAllocator alloc, - JdkApplicationProtocolNegotiator applicationNegotiator) { - super(engine, alloc, applicationNegotiator.protocols()); - // Register for completion of the handshake. - Conscrypt.setHandshakeListener(engine, new HandshakeListener() { - @Override - public void onHandshakeFinished() throws SSLException { - selectProtocol(); - } - }); - - protocolListener = checkNotNull(applicationNegotiator - .protocolListenerFactory().newListener(this, applicationNegotiator.protocols()), - "protocolListener"); - } - - private void selectProtocol() throws SSLException { - String protocol = Conscrypt.getApplicationProtocol(getWrappedEngine()); - try { - protocolListener.selected(protocol); - } catch (Throwable e) { - throw toSSLHandshakeException(e); - } - } - } - - private static final class ServerEngine extends ConscryptAlpnSslEngine { - private final ProtocolSelector protocolSelector; - - ServerEngine(SSLEngine engine, ByteBufAllocator alloc, - JdkApplicationProtocolNegotiator applicationNegotiator) { - super(engine, alloc, applicationNegotiator.protocols()); - - // Register for completion of the handshake. - Conscrypt.setHandshakeListener(engine, new HandshakeListener() { - @Override - public void onHandshakeFinished() throws SSLException { - selectProtocol(); - } - }); - - protocolSelector = checkNotNull(applicationNegotiator.protocolSelectorFactory() - .newSelector(this, - new LinkedHashSet<String>(applicationNegotiator.protocols())), - "protocolSelector"); - } - - private void selectProtocol() throws SSLException { - try { - String protocol = Conscrypt.getApplicationProtocol(getWrappedEngine()); - protocolSelector.select(protocol != null ? Collections.singletonList(protocol) - : Collections.<String>emptyList()); - } catch (Throwable e) { - throw toSSLHandshakeException(e); - } - } - } - - private static final class BufferAllocatorAdapter extends BufferAllocator { - private final ByteBufAllocator alloc; - - BufferAllocatorAdapter(ByteBufAllocator alloc) { - this.alloc = alloc; - } - - @Override - public AllocatedBuffer allocateDirectBuffer(int capacity) { - return new BufferAdapter(alloc.directBuffer(capacity)); - } - } - - private static final class BufferAdapter extends AllocatedBuffer { - private final ByteBuf nettyBuffer; - private final ByteBuffer buffer; - - BufferAdapter(ByteBuf nettyBuffer) { - this.nettyBuffer = nettyBuffer; - buffer = nettyBuffer.nioBuffer(0, nettyBuffer.capacity()); - } - - @Override - public ByteBuffer nioBuffer() { - return buffer; - } - - @Override - public AllocatedBuffer retain() { - nettyBuffer.retain(); - return this; - } - - @Override - public AllocatedBuffer release() { - nettyBuffer.release(); - return this; - } - } -} diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java index 8c40d8dc91..8d7a854d62 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java @@ -26,8 +26,7 @@ import javax.net.ssl.SSLEngine; */ @Deprecated public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { - private static final boolean AVAILABLE = Conscrypt.isAvailable() || - JdkAlpnSslUtils.supportsAlpn() || + private static final boolean AVAILABLE = JdkAlpnSslUtils.supportsAlpn() || JettyAlpnSslEngine.isAvailable(); private static final SslEngineWrapperFactory ALPN_WRAPPER = AVAILABLE ? new AlpnWrapper() : new FailureWrapper(); @@ -119,7 +118,6 @@ public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicati public SSLEngine wrapSslEngine(SSLEngine engine, ByteBufAllocator alloc, JdkApplicationProtocolNegotiator applicationNegotiator, boolean isServer) { throw new RuntimeException("ALPN unsupported. Is your classpath configured correctly?" - + " For Conscrypt, add the appropriate Conscrypt JAR to classpath and set the security provider." + " For Jetty-ALPN, see " + "https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-starting"); } @@ -129,10 +127,6 @@ public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicati @Override public SSLEngine wrapSslEngine(SSLEngine engine, ByteBufAllocator alloc, JdkApplicationProtocolNegotiator applicationNegotiator, boolean isServer) { - if (Conscrypt.isEngineSupported(engine)) { - return isServer ? ConscryptAlpnSslEngine.newServerEngine(engine, alloc, applicationNegotiator) - : ConscryptAlpnSslEngine.newClientEngine(engine, alloc, applicationNegotiator); - } // ALPN support was recently backported to Java8 as // https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8230977. // Because of this lets not do a Java version runtime check but just depend on if the required methods are diff --git a/handler/src/main/java/io/netty/handler/ssl/SslHandler.java b/handler/src/main/java/io/netty/handler/ssl/SslHandler.java index fbb102d884..38d411eccd 100644 --- a/handler/src/main/java/io/netty/handler/ssl/SslHandler.java +++ b/handler/src/main/java/io/netty/handler/ssl/SslHandler.java @@ -229,50 +229,6 @@ public class SslHandler extends ByteToMessageDecoder implements ChannelOutboundH return ((ReferenceCountedOpenSslEngine) engine).jdkCompatibilityMode; } }, - CONSCRYPT(true, COMPOSITE_CUMULATOR) { - @Override - SSLEngineResult unwrap(SslHandler handler, ByteBuf in, int readerIndex, int len, ByteBuf out) - throws SSLException { - int nioBufferCount = in.nioBufferCount(); - int writerIndex = out.writerIndex(); - final SSLEngineResult result; - if (nioBufferCount > 1) { - /* - * Use a special unwrap method without additional memory copies. - */ - try { - handler.singleBuffer[0] = toByteBuffer(out, writerIndex, out.writableBytes()); - result = ((ConscryptAlpnSslEngine) handler.engine).unwrap( - in.nioBuffers(readerIndex, len), - handler.singleBuffer); - } finally { - handler.singleBuffer[0] = null; - } - } else { - result = handler.engine.unwrap(toByteBuffer(in, readerIndex, len), - toByteBuffer(out, writerIndex, out.writableBytes())); - } - out.writerIndex(writerIndex + result.bytesProduced()); - return result; - } - - @Override - ByteBuf allocateWrapBuffer(SslHandler handler, ByteBufAllocator allocator, - int pendingBytes, int numComponents) { - return allocator.directBuffer( - ((ConscryptAlpnSslEngine) handler.engine).calculateOutNetBufSize(pendingBytes, numComponents)); - } - - @Override - int calculatePendingData(SslHandler handler, int guess) { - return guess; - } - - @Override - boolean jdkCompatibilityMode(SSLEngine engine) { - return true; - } - }, JDK(false, MERGE_CUMULATOR) { @Override SSLEngineResult unwrap(SslHandler handler, ByteBuf in, int readerIndex, int len, ByteBuf out) @@ -325,8 +281,7 @@ public class SslHandler extends ByteToMessageDecoder implements ChannelOutboundH }; static SslEngineType forEngine(SSLEngine engine) { - return engine instanceof ReferenceCountedOpenSslEngine ? TCNATIVE : - engine instanceof ConscryptAlpnSslEngine ? CONSCRYPT : JDK; + return engine instanceof ReferenceCountedOpenSslEngine ? TCNATIVE : JDK; } SslEngineType(boolean wantsDirectBuffer, Cumulator cumulator) { diff --git a/pom.xml b/pom.xml index a1cfd1b2fe..4fff3dc4e3 100644 --- a/pom.xml +++ b/pom.xml @@ -518,16 +518,6 @@ <optional>true</optional> </dependency> - <!-- Conscrypt - needed for running tests, used for acclerating SSL with OpenSSL. --> - <dependency> - <groupId>${conscrypt.groupId}</groupId> - <artifactId>${conscrypt.artifactId}</artifactId> - <classifier>${conscrypt.classifier}</classifier> - <version>${conscrypt.version}</version> - <scope>compile</scope> - <optional>true</optional> - </dependency> - <!-- Bouncy Castle - completely optional, only needed when: - you generate a temporary self-signed certificate using SelfSignedCertificate, and -- 2.30.1 ++++++ 0003-Remove-optional-deps-jetty-alpn-and-npn.patch ++++++ >From b550be926f2ef3d0d01b3098b7b0d86285266032 Mon Sep 17 00:00:00 2001 From: Mat Booth <mat.bo...@redhat.com> Date: Mon, 7 Sep 2020 13:26:20 +0100 Subject: [PATCH 3/7] Remove optional deps jetty alpn and npn --- handler/pom.xml | 10 -- .../JdkAlpnApplicationProtocolNegotiator.java | 7 +- .../JdkNpnApplicationProtocolNegotiator.java | 10 +- .../netty/handler/ssl/JettyAlpnSslEngine.java | 157 ------------------ .../netty/handler/ssl/JettyNpnSslEngine.java | 122 -------------- pom.xml | 14 -- 6 files changed, 3 insertions(+), 317 deletions(-) delete mode 100644 handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java delete mode 100644 handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java diff --git a/handler/pom.xml b/handler/pom.xml index 8bd2ba0774..7bea1cd0b9 100644 --- a/handler/pom.xml +++ b/handler/pom.xml @@ -71,16 +71,6 @@ <artifactId>bcpkix-jdk15on</artifactId> <optional>true</optional> </dependency> - <dependency> - <groupId>org.eclipse.jetty.npn</groupId> - <artifactId>npn-api</artifactId> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.eclipse.jetty.alpn</groupId> - <artifactId>alpn-api</artifactId> - <optional>true</optional> - </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java index 8d7a854d62..ddcb78e2ca 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java @@ -26,8 +26,7 @@ import javax.net.ssl.SSLEngine; */ @Deprecated public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { - private static final boolean AVAILABLE = JdkAlpnSslUtils.supportsAlpn() || - JettyAlpnSslEngine.isAvailable(); + private static final boolean AVAILABLE = JdkAlpnSslUtils.supportsAlpn(); private static final SslEngineWrapperFactory ALPN_WRAPPER = AVAILABLE ? new AlpnWrapper() : new FailureWrapper(); @@ -134,10 +133,6 @@ public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicati if (JdkAlpnSslUtils.supportsAlpn()) { return new JdkAlpnSslEngine(engine, applicationNegotiator, isServer); } - if (JettyAlpnSslEngine.isAvailable()) { - return isServer ? JettyAlpnSslEngine.newServerEngine(engine, applicationNegotiator) - : JettyAlpnSslEngine.newClientEngine(engine, applicationNegotiator); - } throw new UnsupportedOperationException("ALPN not supported. Unable to wrap SSLEngine of type '" + engine.getClass().getName() + "')"); } diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java b/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java index cbaeb0c462..569c3011c1 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java @@ -25,17 +25,11 @@ import javax.net.ssl.SSLEngine; @Deprecated public final class JdkNpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { private static final SslEngineWrapperFactory NPN_WRAPPER = new SslEngineWrapperFactory() { - { - if (!JettyNpnSslEngine.isAvailable()) { - throw new RuntimeException("NPN unsupported. Is your classpath configured correctly?" - + " See https://wiki.eclipse.org/Jetty/Feature/NPN"); - } - } - @Override public SSLEngine wrapSslEngine(SSLEngine engine, JdkApplicationProtocolNegotiator applicationNegotiator, boolean isServer) { - return new JettyNpnSslEngine(engine, applicationNegotiator, isServer); + throw new UnsupportedOperationException("NPN not supported. Unable to wrap SSLEngine of type '" + + engine.getClass().getName() + "')"); } }; diff --git a/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java deleted file mode 100644 index c8f03f9963..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2014 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ -package io.netty.handler.ssl; - -import static io.netty.handler.ssl.SslUtils.toSSLHandshakeException; -import static io.netty.util.internal.ObjectUtil.checkNotNull; - -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; - -import java.util.LinkedHashSet; -import java.util.List; - -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLException; - -import io.netty.util.internal.PlatformDependent; -import org.eclipse.jetty.alpn.ALPN; - -abstract class JettyAlpnSslEngine extends JdkSslEngine { - private static final boolean available = initAvailable(); - - static boolean isAvailable() { - return available; - } - - private static boolean initAvailable() { - if (PlatformDependent.javaVersion() <= 8) { - try { - // Always use bootstrap class loader. - Class.forName("sun.security.ssl.ALPNExtension", true, null); - return true; - } catch (Throwable ignore) { - // alpn-boot was not loaded. - } - } - return false; - } - - static JettyAlpnSslEngine newClientEngine(SSLEngine engine, - JdkApplicationProtocolNegotiator applicationNegotiator) { - return new ClientEngine(engine, applicationNegotiator); - } - - static JettyAlpnSslEngine newServerEngine(SSLEngine engine, - JdkApplicationProtocolNegotiator applicationNegotiator) { - return new ServerEngine(engine, applicationNegotiator); - } - - private JettyAlpnSslEngine(SSLEngine engine) { - super(engine); - } - - private static final class ClientEngine extends JettyAlpnSslEngine { - ClientEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator) { - super(engine); - checkNotNull(applicationNegotiator, "applicationNegotiator"); - final ProtocolSelectionListener protocolListener = checkNotNull(applicationNegotiator - .protocolListenerFactory().newListener(this, applicationNegotiator.protocols()), - "protocolListener"); - ALPN.put(engine, new ALPN.ClientProvider() { - @Override - public List<String> protocols() { - return applicationNegotiator.protocols(); - } - - @Override - public void selected(String protocol) throws SSLException { - try { - protocolListener.selected(protocol); - } catch (Throwable t) { - throw toSSLHandshakeException(t); - } - } - - @Override - public void unsupported() { - protocolListener.unsupported(); - } - }); - } - - @Override - public void closeInbound() throws SSLException { - try { - ALPN.remove(getWrappedEngine()); - } finally { - super.closeInbound(); - } - } - - @Override - public void closeOutbound() { - try { - ALPN.remove(getWrappedEngine()); - } finally { - super.closeOutbound(); - } - } - } - - private static final class ServerEngine extends JettyAlpnSslEngine { - ServerEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator) { - super(engine); - checkNotNull(applicationNegotiator, "applicationNegotiator"); - final ProtocolSelector protocolSelector = checkNotNull(applicationNegotiator.protocolSelectorFactory() - .newSelector(this, new LinkedHashSet<String>(applicationNegotiator.protocols())), - "protocolSelector"); - ALPN.put(engine, new ALPN.ServerProvider() { - @Override - public String select(List<String> protocols) throws SSLException { - try { - return protocolSelector.select(protocols); - } catch (Throwable t) { - throw toSSLHandshakeException(t); - } - } - - @Override - public void unsupported() { - protocolSelector.unsupported(); - } - }); - } - - @Override - public void closeInbound() throws SSLException { - try { - ALPN.remove(getWrappedEngine()); - } finally { - super.closeInbound(); - } - } - - @Override - public void closeOutbound() { - try { - ALPN.remove(getWrappedEngine()); - } finally { - super.closeOutbound(); - } - } - } -} diff --git a/handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java deleted file mode 100644 index aad00b5f6d..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2014 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -package io.netty.handler.ssl; - -import static io.netty.util.internal.ObjectUtil.checkNotNull; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; -import io.netty.util.internal.PlatformDependent; - -import java.util.LinkedHashSet; -import java.util.List; - -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLException; - -import org.eclipse.jetty.npn.NextProtoNego; -import org.eclipse.jetty.npn.NextProtoNego.ClientProvider; -import org.eclipse.jetty.npn.NextProtoNego.ServerProvider; - -final class JettyNpnSslEngine extends JdkSslEngine { - private static boolean available; - - static boolean isAvailable() { - updateAvailability(); - return available; - } - - private static void updateAvailability() { - if (available) { - return; - } - try { - // Always use bootstrap class loader. - Class.forName("sun.security.ssl.NextProtoNegoExtension", true, null); - available = true; - } catch (Exception ignore) { - // npn-boot was not loaded. - } - } - - JettyNpnSslEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator, boolean server) { - super(engine); - checkNotNull(applicationNegotiator, "applicationNegotiator"); - - if (server) { - final ProtocolSelectionListener protocolListener = checkNotNull(applicationNegotiator - .protocolListenerFactory().newListener(this, applicationNegotiator.protocols()), - "protocolListener"); - NextProtoNego.put(engine, new ServerProvider() { - @Override - public void unsupported() { - protocolListener.unsupported(); - } - - @Override - public List<String> protocols() { - return applicationNegotiator.protocols(); - } - - @Override - public void protocolSelected(String protocol) { - try { - protocolListener.selected(protocol); - } catch (Throwable t) { - PlatformDependent.throwException(t); - } - } - }); - } else { - final ProtocolSelector protocolSelector = checkNotNull(applicationNegotiator.protocolSelectorFactory() - .newSelector(this, new LinkedHashSet<String>(applicationNegotiator.protocols())), - "protocolSelector"); - NextProtoNego.put(engine, new ClientProvider() { - @Override - public boolean supports() { - return true; - } - - @Override - public void unsupported() { - protocolSelector.unsupported(); - } - - @Override - public String selectProtocol(List<String> protocols) { - try { - return protocolSelector.select(protocols); - } catch (Throwable t) { - PlatformDependent.throwException(t); - return null; - } - } - }); - } - } - - @Override - public void closeInbound() throws SSLException { - NextProtoNego.remove(getWrappedEngine()); - super.closeInbound(); - } - - @Override - public void closeOutbound() { - NextProtoNego.remove(getWrappedEngine()); - super.closeOutbound(); - } -} diff --git a/pom.xml b/pom.xml index 4fff3dc4e3..e50e4e04ac 100644 --- a/pom.xml +++ b/pom.xml @@ -482,20 +482,6 @@ <optional>true</optional> </dependency> - <!-- SPDY and HTTP/2 - completely optional --> - <dependency> - <groupId>org.eclipse.jetty.npn</groupId> - <artifactId>npn-api</artifactId> - <version>1.1.1.v20141010</version> - <scope>provided</scope> <!-- Provided by npn-boot --> - </dependency> - <dependency> - <groupId>org.eclipse.jetty.alpn</groupId> - <artifactId>alpn-api</artifactId> - <version>1.1.2.v20150522</version> - <scope>provided</scope> <!-- Provided by alpn-boot --> - </dependency> - <!-- Google Protocol Buffers - completely optional --> <dependency> <groupId>com.google.protobuf</groupId> -- 2.30.1 ++++++ 0004-Remove-optional-dep-tcnative.patch ++++++ ++++ 8794 lines (skipped) ++++++ 0005-Remove-optional-dep-log4j.patch ++++++ ++++ 954 lines (skipped) ++++++ 0006-revert-Fix-native-image-build.patch ++++++ ++++ 972 lines (skipped) ++++++ 0007-Revert-Support-session-cache-for-client-and-server-w.patch ++++++ ++++ 1778 lines (skipped) ++++++ netty-4.1.13.Final.tar.gz -> netty-4.1.60.Final.tar.gz ++++++ ++++ 253452 lines of diff (skipped) ++++++ no-werror.patch ++++++ --- netty-netty-4.1.59.Final/transport-native-unix-common/pom.xml 2021-02-11 19:24:51.672176696 +0100 +++ netty-netty-4.1.59.Final/transport-native-unix-common/pom.xml 2021-02-11 19:25:30.380406003 +0100 @@ -153,7 +153,7 @@ <env key="LIB_DIR" value="${nativeLibOnlyDir}" /> <env key="OBJ_DIR" value="${nativeObjsOnlyDir}" /> <env key="JNI_PLATFORM" value="${jni.platform}" /> - <env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> + <env key="CFLAGS" value="-O3 -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> <env key="LDFLAGS" value="-Wl,--no-as-needed -lrt" /> <env key="LIB_NAME" value="${nativeLibName}" /> <!-- support for __attribute__((weak_import)) by the linker was added in 10.2 so ensure we @@ -228,7 +228,7 @@ <env key="LIB_DIR" value="${nativeLibOnlyDir}" /> <env key="OBJ_DIR" value="${nativeObjsOnlyDir}" /> <env key="JNI_PLATFORM" value="${jni.platform}" /> - <env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> + <env key="CFLAGS" value="-O3 -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> <env key="LDFLAGS" value="-Wl,--no-as-needed -lrt" /> <env key="LIB_NAME" value="${nativeLibName}" /> </exec> @@ -298,7 +298,7 @@ <env key="LIB_DIR" value="${nativeLibOnlyDir}" /> <env key="OBJ_DIR" value="${nativeObjsOnlyDir}" /> <env key="JNI_PLATFORM" value="${jni.platform}" /> - <env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> + <env key="CFLAGS" value="-O3 -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> <env key="LDFLAGS" value="-Wl,--no-as-needed -lrt" /> <env key="LIB_NAME" value="${nativeLibName}" /> </exec> @@ -372,7 +372,7 @@ <env key="LIB_DIR" value="${nativeLibOnlyDir}" /> <env key="OBJ_DIR" value="${nativeObjsOnlyDir}" /> <env key="JNI_PLATFORM" value="${jni.platform}" /> - <env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> + <env key="CFLAGS" value="-O3 -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> <env key="LDFLAGS" value="-Wl,--no-as-needed -lrt" /> <env key="LIB_NAME" value="${nativeLibName}" /> </exec> @@ -446,7 +446,7 @@ <env key="LIB_DIR" value="${nativeLibOnlyDir}" /> <env key="OBJ_DIR" value="${nativeObjsOnlyDir}" /> <env key="JNI_PLATFORM" value="${jni.platform}" /> - <env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> + <env key="CFLAGS" value="-O3 -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable -fvisibility=hidden" /> <env key="LDFLAGS" value="-Wl,--no-as-needed -lrt" /> <env key="LIB_NAME" value="${nativeLibName}" /> </exec>