sonatype-nexus-community / nexus-repository-apt

A Nexus Repository 3 plugin that allows usage of apt repositories
Eclipse Public License 1.0
105 stars 50 forks source link

Fix working with S3 blobstore #103

Closed mpoindexter closed 4 years ago

mpoindexter commented 5 years ago

ArArchiveInputStream in commons-compress 1.18 has a bug that prevents working with any source stream that does not implement available() as returning the number of bytes remaining to be read in the entire stream. Since socket based streams don't behave like this, it does not work with the S3 blobstore.

commons-compress has fixed this upstream, but it's not in a released version yet, so I've included a local copy of the fixed class until this appears in an upstream release and can be fixed by depending on a newer version.

mpoindexter commented 5 years ago

Should fix #43

@DarthHater - is this fine from a licensing perspective?

DarthHater commented 5 years ago

@mpoindexter what method got changed for the fix? Might be easier to just override it in some smaller class etc...

Not 100% sure on the licensing aspect, but I surmise it's ok. I'll ask internally to see what the dealio is.

mpoindexter commented 5 years ago

The code here is actually just the latest from commons-compress's git. That commit is https://gitbox.apache.org/repos/asf?p=commons-compress.git;a=commit;h=8e5338cd2d6edc347cfe2bcd72f15bf23b178f5b

mpoindexter commented 5 years ago

I didn't want to override in some smaller class since the idea is that once commons-compress ships a release with this fix in, we can just bump the dependency version and get rid of this code.

DarthHater commented 5 years ago

Yeah I can vibe on that, just like hate copying and pasting whole classes, etc... for licensing, blah blah blah issues.

@jlstephens89 you have any preference on dealing with this?

j-s-3 commented 5 years ago

@DarthHater I've added this as part of our work to internalize the APT plugin. I agree I'd rather not copy in a full class.

mpoindexter commented 5 years ago

I don't love the full class either, just seemed like the least bad option at the moment since the method that controls this touches private members. Hopefully by the time you guys get this internalized commons-compress has done a release and you can just depend on it. Might be worth asking on their mailing list when they plan to do a release.

bhamail commented 4 years ago

APT is now part of Nexus Repository Manager. Version 3.17.0 includes the APT plugin by default. If this is still an issue if using 3.17.0 or later please file an issue at https://issues.sonatype.org/. Links to the new source code location are in the top level README.md