Aha, interesting. How does that work? Is there a way to select some sort of > long name option before compressing files? Not familiar with it. Good to > hear that the work won't be in vain at least.
See http://commons.apache.org/proper/commons-compress/tar.html . The library supports "star/GNU tar/BSD" and "POSIX/PAX" extensions for tar specification, which allow handling big files. Either way, I need to extend hudson's FilePath.java in order to recognize > the format of the installation files. ... What do you think about this > approach? Any other ideas? Most likely you do not need it, because you can implement a standalone ToolInstaller. But such switch is a good option for generic installers as well. BR, Oleg воскресенье, 1 мая 2016 г., 23:40:14 UTC+2 пользователь Martin Hjelmqvist написал: > > Thanks for the reply. Figured you were busy with something. :) > > >> You are right, the extraction happens in FilePath. In the Jenkins project >> we rely on the implementation in org.apache.commons.compress.archivers. It >> supports endian bits at least for unarchive operations. >> > Yes and no, we rely on the library. So for the Jenkins project it's >> "automatic" >> > > I'll look up the endian compatibility with SevenZ and JUnrar (libraries > for .7z and .rar respectively). > I've been looking into what you mentioned about Extra Tool Installers, but > not quite sure how do approach it anyway. Please do correct the following > proposals if they are wrong. Either way, I need to extend hudson's > FilePath.java in order to recognize the format of the installation files. > The following code is from FilePath.java in installIfNecessary(...), where > the blue code is where I think I'll add the format check. Next I think > I'll try to imitate the unzip methods' structure in that class as much as > possible when implementing the rar extractor. (Adding "unrar" methods where > the extraction is done). > > try { if(archive.toExternalForm().endsWith(".zip")){ > unzipFrom(cis); *}else if(archive.toExternalForm().endsWith(".rar")){ > unrarFrom(cis);* > }else{ > untarFrom(cis,GZIP); } > } catch (IOException e) { > throw new IOException(String.format("Failed to unpack %s (%d bytes read > of total %d)", > archive,cis.getByteCount(),con.getContentLength()),e); > } > > What do you think about this approach? Any other ideas? > > RAR has its own issues. For your case I'd recommend to stick to a >> particular format and to implement it. Not every tool needs permission >> bits. The advantage is that there is a big number of Windows tools being >> delivered by RAR. Hence such installer provides much more added alue than >> 7zip. >> > > I'm able to extract both .rar and .7z files, so I think I'm quite flexible > on that point. If RAR is preferred, I could implement support for that > format. > > >> I would also like to mention that Jenkins' FilePath implementation >> supports files with size >8Gb (starting from 1.627) via LONGFILE_GNU >> extension. The most of the bits have been implemented here: >> https://github.com/jenkinsci/jenkins/commit/b6c7b83e7ba1a7538382d220d044626f2b2e65be >> >> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fjenkinsci%2Fjenkins%2Fcommit%2Fb6c7b83e7ba1a7538382d220d044626f2b2e65be&sa=D&sntz=1&usg=AFQjCNEUEog-_tI9c19nPTwk5zsW9XzxJA> >> >> . I would expect the tar installer to work on big files, but it does not >> decrease the potential added value of adding new installers , especially in >> the case of RAR files. >> > > Aha, interesting. How does that work? Is there a way to select some sort > of long name option before compressing files? Not familiar with it. Good to > hear that the work won't be in vain at least. > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/d880bb21-6bb4-4e8e-9f99-e93f9132215d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
