From 43a552a74dad9c502730c7a1e953a2246ba3b23a Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 23 Sep 2017 11:45:30 +0200 Subject: [PATCH] Add conditional patch for removing snappy support --- ...void-using-ParallelScatterZipCreator.patch | 444 ------------------ 0001-Remove-support-for-snappy.patch | 55 +++ plexus-archiver.spec | 8 +- 3 files changed, 62 insertions(+), 445 deletions(-) delete mode 100644 0001-Avoid-using-ParallelScatterZipCreator.patch create mode 100644 0001-Remove-support-for-snappy.patch diff --git a/0001-Avoid-using-ParallelScatterZipCreator.patch b/0001-Avoid-using-ParallelScatterZipCreator.patch deleted file mode 100644 index 218c6bd..0000000 --- a/0001-Avoid-using-ParallelScatterZipCreator.patch +++ /dev/null @@ -1,444 +0,0 @@ -From 985837ac90d01d7cb82ba66e2edcd54e1a138c9f Mon Sep 17 00:00:00 2001 -From: Mat Booth -Date: Tue, 16 Jun 2015 11:00:41 +0100 -Subject: [PATCH] Avoid using ParallelScatterZipCreator - ---- - .../codehaus/plexus/archiver/ear/EarArchiver.java | 6 +- - .../codehaus/plexus/archiver/jar/JarArchiver.java | 26 ++-- - .../codehaus/plexus/archiver/war/WarArchiver.java | 6 +- - .../plexus/archiver/zip/AbstractZipArchiver.java | 137 ++++++++++++--------- - 4 files changed, 97 insertions(+), 78 deletions(-) - -diff --git a/src/main/java/org/codehaus/plexus/archiver/ear/EarArchiver.java b/src/main/java/org/codehaus/plexus/archiver/ear/EarArchiver.java -index 951f10c..4b49a46 100644 ---- a/src/main/java/org/codehaus/plexus/archiver/ear/EarArchiver.java -+++ b/src/main/java/org/codehaus/plexus/archiver/ear/EarArchiver.java -@@ -17,7 +17,7 @@ - * - */ - --import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator; -+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; - import org.codehaus.plexus.archiver.ArchiveEntry; - import org.codehaus.plexus.archiver.ArchiverException; - import org.codehaus.plexus.archiver.jar.JarArchiver; -@@ -79,7 +79,7 @@ public void addArchives( File directoryName, String[] includes, String[] exclude - addDirectory( directoryName, "/", includes, excludes ); - } - -- protected void initZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void initZipOutputStream( ZipArchiveOutputStream zOut ) - throws ArchiverException, IOException - { - // If no webxml file is specified, it's an error. -@@ -94,7 +94,7 @@ protected void initZipOutputStream( ParallelScatterZipCreator zOut ) - /** - * Overridden from ZipArchiver class to deal with application.xml - */ -- protected void zipFile( ArchiveEntry entry, ParallelScatterZipCreator zOut, String vPath, int mode ) -+ protected void zipFile( ArchiveEntry entry, ZipArchiveOutputStream zOut, String vPath, int mode ) - throws IOException, ArchiverException - { - // If the file being added is META-INF/application.xml, we -diff --git a/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java b/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java -index 362dc0c..1dc3c9a 100644 ---- a/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java -+++ b/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java -@@ -17,7 +17,6 @@ - * limitations under the License. - */ - --import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator; - import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; - import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; - import org.codehaus.plexus.archiver.ArchiverException; -@@ -286,7 +285,7 @@ public void addConfiguredIndexJars( File indexJar ) - indexJars.add( indexJar.getAbsolutePath() ); - } - -- protected void initZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void initZipOutputStream( ZipArchiveOutputStream zOut ) - throws ArchiverException, IOException - { - if ( !skipWriting ) -@@ -336,7 +335,7 @@ private Manifest createManifest() - return finalManifest; - } - -- private void writeManifest( ParallelScatterZipCreator zOut, Manifest manifest ) -+ private void writeManifest( ZipArchiveOutputStream zOut, Manifest manifest ) - throws IOException, ArchiverException - { - for ( Enumeration e = manifest.getWarnings(); e.hasMoreElements(); ) -@@ -354,7 +353,7 @@ private void writeManifest( ParallelScatterZipCreator zOut, Manifest manifest ) - super.initZipOutputStream( zOut ); - } - -- protected void finalizeZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void finalizeZipOutputStream( ZipArchiveOutputStream zOut ) - throws IOException, ArchiverException - { - if ( index ) -@@ -375,7 +374,7 @@ protected void finalizeZipOutputStream( ParallelScatterZipCreator zOut ) - * @throws org.codehaus.plexus.archiver.ArchiverException - * . - */ -- private void createIndexList( ParallelScatterZipCreator zOut ) -+ private void createIndexList( ZipArchiveOutputStream zOut ) - throws IOException, ArchiverException - { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); -@@ -457,7 +456,7 @@ private void createIndexList( ParallelScatterZipCreator zOut ) - /** - * Overridden from Zip class to deal with manifests and index lists. - */ -- protected void zipFile( @WillClose InputStream is, ParallelScatterZipCreator zOut, String vPath, long lastModified, File fromArchive, -+ protected void zipFile( @WillClose InputStream is, ZipArchiveOutputStream zOut, String vPath, long lastModified, File fromArchive, - int mode, String symlinkDestination ) - throws IOException, ArchiverException - { -@@ -539,20 +538,19 @@ protected boolean createEmptyZip( File zipFile ) - try - { - getLogger().debug( "Building MANIFEST-only jar: " + getDestFile().getAbsolutePath() ); -- zipArchiveOutputStream = new ZipArchiveOutputStream( bufferedOutputStream( fileOutputStream( getDestFile(), "jar" ) )); -+ zOut = new ZipArchiveOutputStream( bufferedOutputStream( fileOutputStream( getDestFile(), "jar" ) )); - -- zipArchiveOutputStream.setEncoding(getEncoding()); -+ zOut.setEncoding(getEncoding()); - if ( isCompress() ) - { -- zipArchiveOutputStream.setMethod(ZipArchiveOutputStream.DEFLATED); -+ zOut.setMethod(ZipArchiveOutputStream.DEFLATED); - } - else - { -- zipArchiveOutputStream.setMethod(ZipArchiveOutputStream.STORED); -+ zOut.setMethod(ZipArchiveOutputStream.STORED); - } -- ParallelScatterZipCreator ps = new ParallelScatterZipCreator(); -- initZipOutputStream( ps ); -- finalizeZipOutputStream( ps ); -+ initZipOutputStream( zOut ); -+ finalizeZipOutputStream( zOut ); - } - catch ( IOException ioe ) - { -@@ -561,7 +559,7 @@ protected boolean createEmptyZip( File zipFile ) - finally - { - // Close the output stream. -- //IOUtil.close( zOut ); -+ IOUtil.close( zOut ); - createEmpty = false; - } - return true; -diff --git a/src/main/java/org/codehaus/plexus/archiver/war/WarArchiver.java b/src/main/java/org/codehaus/plexus/archiver/war/WarArchiver.java -index 00c9ddd..527219f 100644 ---- a/src/main/java/org/codehaus/plexus/archiver/war/WarArchiver.java -+++ b/src/main/java/org/codehaus/plexus/archiver/war/WarArchiver.java -@@ -17,7 +17,7 @@ - * - */ - --import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator; -+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; - import org.codehaus.plexus.archiver.ArchiveEntry; - import org.codehaus.plexus.archiver.ArchiverException; - import org.codehaus.plexus.archiver.jar.JarArchiver; -@@ -154,7 +154,7 @@ public void addWebinf( File directoryName, String[] includes, String[] excludes - * before initializing the output stream. - * @param zOut - */ -- protected void initZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void initZipOutputStream( ZipArchiveOutputStream zOut ) - throws ArchiverException, IOException - { - // If no webxml file is specified, it's an error. -@@ -168,7 +168,7 @@ protected void initZipOutputStream( ParallelScatterZipCreator zOut ) - /** - * Overridden from ZipArchiver class to deal with web.xml - */ -- protected void zipFile( ArchiveEntry entry, ParallelScatterZipCreator zOut, String vPath ) -+ protected void zipFile( ArchiveEntry entry, ZipArchiveOutputStream zOut, String vPath ) - throws IOException, ArchiverException - { - // If the file being added is WEB-INF/web.xml, we warn if it's -diff --git a/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java b/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java -index 795b8dd..5c415b7 100755 ---- a/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java -+++ b/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java -@@ -17,15 +17,12 @@ - * limitations under the License. - */ - --import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator; - import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; - import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; - import org.apache.commons.compress.archivers.zip.ZipEncoding; - import org.apache.commons.compress.archivers.zip.ZipEncodingHelper; --import java.util.concurrent.ExecutionException; - import java.util.zip.CRC32; - --import org.apache.commons.compress.parallel.InputStreamSupplier; - import org.codehaus.plexus.archiver.AbstractArchiver; - import org.codehaus.plexus.archiver.ArchiveEntry; - import org.codehaus.plexus.archiver.Archiver; -@@ -130,9 +127,7 @@ - - private boolean success; - -- private ParallelScatterZipCreator zOut; -- -- protected ZipArchiveOutputStream zipArchiveOutputStream; -+ protected ZipArchiveOutputStream zOut; - - public String getComment() - { -@@ -225,7 +220,7 @@ protected void execute() - finalizeZipOutputStream( zOut ); - } - -- protected void finalizeZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void finalizeZipOutputStream( ZipArchiveOutputStream zOut ) - throws IOException, ArchiverException - { - } -@@ -305,15 +300,13 @@ private void createArchiveMain() - - if ( !skipWriting ) - { -- zipArchiveOutputStream = -+ zOut = - new ZipArchiveOutputStream( bufferedOutputStream( fileOutputStream( zipFile, "zip" ) ) ); -- zipArchiveOutputStream.setEncoding( encoding ); -- zipArchiveOutputStream.setCreateUnicodeExtraFields( -+ zOut.setEncoding( encoding ); -+ zOut.setCreateUnicodeExtraFields( - ZipArchiveOutputStream.UnicodeExtraFieldPolicy.NOT_ENCODEABLE ); -- zipArchiveOutputStream.setMethod( -+ zOut.setMethod( - doCompress ? ZipArchiveOutputStream.DEFLATED : ZipArchiveOutputStream.STORED ); -- -- zOut = new ParallelScatterZipCreator(); - } - initZipOutputStream( zOut ); - -@@ -339,7 +332,7 @@ private void createArchiveMain() - * @param zOut the stream to write to - */ - @SuppressWarnings( { "JavaDoc" } ) -- protected final void addResources( ResourceIterator resources, ParallelScatterZipCreator zOut ) -+ protected final void addResources( ResourceIterator resources, ZipArchiveOutputStream zOut ) - throws IOException, ArchiverException - { - while ( resources.hasNext() ) -@@ -379,7 +372,7 @@ protected final void addResources( ResourceIterator resources, ParallelScatterZi - * be impossible and is not really supported. - */ - @SuppressWarnings( { "JavaDoc" } ) -- private void addParentDirs(ArchiveEntry archiveEntry, File baseDir, String entry, ParallelScatterZipCreator zOut) -+ private void addParentDirs(ArchiveEntry archiveEntry, File baseDir, String entry, ZipArchiveOutputStream zOut) - throws IOException - { - if ( !doFilesonly && getIncludeEmptyDirs() ) -@@ -417,7 +410,7 @@ private void addParentDirs(ArchiveEntry archiveEntry, File baseDir, String entry - * @param symlinkDestination - */ - @SuppressWarnings( { "JavaDoc" } ) -- protected void zipFile( @WillClose InputStream in, ParallelScatterZipCreator zOut, String vPath, long lastModified, -+ protected void zipFile( @WillClose InputStream in, ZipArchiveOutputStream zOut, String vPath, long lastModified, - File fromArchive, int mode, String symlinkDestination ) - throws IOException, ArchiverException - { -@@ -445,16 +438,37 @@ protected void zipFile( @WillClose InputStream in, ParallelScatterZipCreator zOu - InputStream payload; - if ( ze.isUnixSymlink() ) - { -+ zOut.putArchiveEntry( ze ); - ZipEncoding enc = ZipEncodingHelper.getZipEncoding( getEncoding() ); - final byte[] bytes = enc.encode( symlinkDestination ).array(); -- payload = new ByteArrayInputStream( bytes ); -- } -- else -- { -- payload = maybeSequence( header, read, in ); -+ zOut.write( bytes, 0, bytes.length); -+ } else if (zOut.isSeekable() || compressThis) { -+ zOut.putArchiveEntry( ze ); -+ if (read > 0) zOut.write(header, 0, read); -+ IOUtil.copy( in, zOut, 8 * 1024); -+ } else { -+ if (in.markSupported()) -+ { -+ in.mark( Integer.MAX_VALUE ); -+ readWithZipStats(in, header, read, ze, null); -+ in.reset(); -+ zOut.putArchiveEntry( ze); -+ if (read > 0) zOut.write(header, 0, read); -+ IOUtil.copy(in, zOut, 8 * 1024); -+ } -+ else -+ { -+ // Store data into a byte[] -+ // todo: explain how on earth this code works with zip streams > 128KB ??? -+ ByteArrayOutputStream bos = new ByteArrayOutputStream(128 * 1024); -+ readWithZipStats(in, header,read, ze, bos); -+ zOut.putArchiveEntry(ze); -+ if (read > 0) zOut.write(header, 0, read); -+ bos.writeTo( zOut); -+ } - } -- zOut.addArchiveEntry( ze, createInputStreamSupplier( payload ) ); - -+ zOut.closeArchiveEntry(); - } - } - -@@ -468,6 +482,33 @@ private boolean isZipHeader( byte[] header ) - return header[0] == 0x50 && header[1] == 0x4b && header[2] == 3 && header[3] == 4; - } - -+ private void readWithZipStats(InputStream in, byte[] header, -+ int headerRead, ZipArchiveEntry ze, ByteArrayOutputStream bos) -+ throws IOException { -+ byte[] buffer = new byte[8 * 1024]; -+ -+ CRC32 cal2 = new CRC32(); -+ -+ long size = 0; -+ -+ for (int i = 0; i < headerRead; i++) { -+ cal2.update(header[i]); -+ size++; -+ } -+ -+ int count = 0; -+ do { -+ size += count; -+ cal2.update(buffer, 0, count); -+ if (bos != null) { -+ bos.write(buffer, 0, count); -+ } -+ count = in.read(buffer, 0, buffer.length); -+ } while (count != -1); -+ ze.setSize(size); -+ ze.setCrc(cal2.getValue()); -+ } -+ - /** - * Method that gets called when adding from java.io.File instances. - *

-@@ -478,7 +519,7 @@ private boolean isZipHeader( byte[] header ) - * @param vPath the name this entry shall have in the archive - */ - @SuppressWarnings( { "JavaDoc" } ) -- protected void zipFile( ArchiveEntry entry, ParallelScatterZipCreator zOut, String vPath ) -+ protected void zipFile( ArchiveEntry entry, ZipArchiveOutputStream zOut, String vPath ) - throws IOException, ArchiverException - { - final PlexusIoResource resource = entry.getResource(); -@@ -498,6 +539,10 @@ protected void zipFile( ArchiveEntry entry, ParallelScatterZipCreator zOut, Stri - { - throw new ArchiverException( "IOException when zipping r" + entry.getName() + ": " + e.getMessage(), e ); - } -+ finally -+ { -+ IOUtil.close( in ); -+ } - } - - private void setTime( java.util.zip.ZipEntry zipEntry, long lastModified ) -@@ -518,7 +563,7 @@ private void setTime( java.util.zip.ZipEntry zipEntry, long lastModified ) - */ - } - -- protected void zipDir( PlexusIoResource dir, ParallelScatterZipCreator zOut, String vPath, int mode, -+ protected void zipDir( PlexusIoResource dir, ZipArchiveOutputStream zOut, String vPath, int mode, - String encodingToUse ) - throws IOException - { -@@ -571,30 +616,20 @@ protected void zipDir( PlexusIoResource dir, ParallelScatterZipCreator zOut, Str - } - ze.setUnixMode( mode ); - -- if ( !isSymlink ) -- { -- zOut.addArchiveEntry( ze, createInputStreamSupplier( new ByteArrayInputStream( "".getBytes() ) ) ); -- } -- else -+ zOut.putArchiveEntry( ze ); -+ -+ if ( isSymlink ) - { - String symlinkDestination = ( (SymlinkDestinationSupplier) dir ).getSymlinkDestination(); - ZipEncoding enc = ZipEncodingHelper.getZipEncoding( encodingToUse ); - final byte[] bytes = enc.encode( symlinkDestination ).array(); - ze.setMethod( ZipArchiveEntry.DEFLATED ); -- zOut.addArchiveEntry( ze, createInputStreamSupplier( new ByteArrayInputStream( bytes ) ) ); -- } -- } -- } -+ zOut.write( bytes, 0, bytes.length ); - -- private InputStreamSupplier createInputStreamSupplier( final InputStream inputStream ) -- { -- return new InputStreamSupplier() -- { -- public InputStream get() -- { -- return inputStream; - } -- }; -+ -+ zOut.closeArchiveEntry(); -+ } - } - - /** -@@ -685,7 +720,7 @@ public void reset() - * - * @param zOut The output stream - */ -- protected void initZipOutputStream( ParallelScatterZipCreator zOut ) -+ protected void initZipOutputStream( ZipArchiveOutputStream zOut ) - throws ArchiverException, IOException - { - } -@@ -731,10 +766,9 @@ protected void close() - // Close the output stream. - try - { -- if ( zipArchiveOutputStream != null ) -+ if ( zOut != null ) - { -- zOut.writeTo( zipArchiveOutputStream ); -- zipArchiveOutputStream.close(); -+ zOut.close(); - } - } - catch ( IOException ex ) -@@ -752,19 +786,6 @@ protected void close() - { - throw ex; - } -- -- } -- catch ( InterruptedException e ) -- { -- IOException ex = new IOException( "InterruptedException exception" ); -- ex.initCause( e.getCause() ); -- throw ex; -- } -- catch ( ExecutionException e ) -- { -- IOException ex = new IOException( "Execution exception" ); -- ex.initCause( e.getCause() ); -- throw ex; - } - } - --- -2.1.0 - diff --git a/0001-Remove-support-for-snappy.patch b/0001-Remove-support-for-snappy.patch new file mode 100644 index 0000000..cac52ab --- /dev/null +++ b/0001-Remove-support-for-snappy.patch @@ -0,0 +1,55 @@ +From bd1055a190a1a64374f4aeb3bfde138d9c3d965f Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Sat, 23 Sep 2017 11:43:45 +0200 +Subject: [PATCH] Remove support for snappy + +--- + src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java | 3 +-- + src/main/java/org/codehaus/plexus/archiver/tar/TarUnArchiver.java | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java b/src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java +index 398ecf1..0d46cfc 100644 +--- a/src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java ++++ b/src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java +@@ -38,7 +38,6 @@ + import org.codehaus.plexus.components.io.resources.PlexusIoResource; + import org.codehaus.plexus.util.IOUtil; + import org.codehaus.plexus.util.StringUtils; +-import org.iq80.snappy.SnappyOutputStream; + import static org.codehaus.plexus.archiver.util.Streams.bufferedOutputStream; + + /** +@@ -489,7 +488,7 @@ else if ( TarCompressionMethod.bzip2.equals( tarCompressionMethod ) ) + } + else if ( TarCompressionMethod.snappy.equals( tarCompressionMethod ) ) + { +- return new SnappyOutputStream( bufferedOutputStream( ostream ) ); ++ throw new UnsupportedOperationException( "This version of plexus-archiver does not upport snappy compression" ); + } + else if ( TarCompressionMethod.xz.equals( tarCompressionMethod ) ) + { +diff --git a/src/main/java/org/codehaus/plexus/archiver/tar/TarUnArchiver.java b/src/main/java/org/codehaus/plexus/archiver/tar/TarUnArchiver.java +index 4bc94a4..15f0494 100644 +--- a/src/main/java/org/codehaus/plexus/archiver/tar/TarUnArchiver.java ++++ b/src/main/java/org/codehaus/plexus/archiver/tar/TarUnArchiver.java +@@ -30,7 +30,6 @@ + import org.codehaus.plexus.archiver.ArchiverException; + import org.codehaus.plexus.archiver.util.Streams; + import org.codehaus.plexus.util.IOUtil; +-import org.iq80.snappy.SnappyInputStream; + + /** + * @author Emmanuel Venisse +@@ -153,7 +152,7 @@ else if ( compression == UntarCompressionMethod.BZIP2 ) + } + else if ( compression == UntarCompressionMethod.SNAPPY ) + { +- return new SnappyInputStream( istream, true ); ++ throw new UnsupportedOperationException( "This version of plexus-archiver does not upport snappy compression" ); + } + else if ( compression == UntarCompressionMethod.XZ ) + { +-- +2.13.5 + diff --git a/plexus-archiver.spec b/plexus-archiver.spec index ce7afcc..c0a2a4a 100644 --- a/plexus-archiver.spec +++ b/plexus-archiver.spec @@ -2,7 +2,7 @@ Name: plexus-archiver Version: 3.5 -Release: 3%{?dist} +Release: 4%{?dist} Epoch: 0 Summary: Plexus Archiver Component License: ASL 2.0 @@ -11,6 +11,8 @@ BuildArch: noarch Source0: https://github.com/codehaus-plexus/plexus-archiver/archive/plexus-archiver-%{version}.tar.gz +Patch0: 0001-Remove-support-for-snappy.patch + BuildRequires: maven-local BuildRequires: mvn(com.google.code.findbugs:jsr305) BuildRequires: mvn(commons-io:commons-io) @@ -49,6 +51,7 @@ Javadoc for %{name}. %mvn_file :%{name} plexus/archiver %if %{without snappy} +%patch0 -p1 %pom_remove_dep org.iq80.snappy:snappy rm -rf src/main/java/org/codehaus/plexus/archiver/snappy rm -f src/main/java/org/codehaus/plexus/archiver/tar/SnappyTarFile.java @@ -68,6 +71,9 @@ rm -f src/main/java/org/codehaus/plexus/archiver/tar/PlexusIoTarSnappyFileResour %license LICENSE %changelog +* Sat Sep 23 2017 Mikolaj Izdebski - 0:3.5-4 +- Add conditional patch for removing snappy support + * Sat Sep 23 2017 Mikolaj Izdebski - 0:3.5-3 - Remove dependency on snappy when building without it