You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by "Peter Donald (JIRA)" <ji...@apache.org> on 2011/06/22 12:10:56 UTC

[jira] [Closed] (BUILDR-533) Reading the manifest without building the zip index

     [ https://issues.apache.org/jira/browse/BUILDR-533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter Donald closed BUILDR-533.
-------------------------------


> Reading the manifest without building the zip index
> ---------------------------------------------------
>
>                 Key: BUILDR-533
>                 URL: https://issues.apache.org/jira/browse/BUILDR-533
>             Project: Buildr
>          Issue Type: Improvement
>          Components: Packaging
>    Affects Versions: 1.4.2
>            Reporter: Antoine Toulme
>            Assignee: Antoine Toulme
>             Fix For: 1.4.3
>
>
> When accessing the MANIFEST file in a jar, the convention in the java world is that it should be the first entry. Actually, quite a few systems will just not work if the MANIFEST.MF file is not the first entry.
> The way we currently access the MANIFEST file is suboptimal as we parse the whole zip, and spend time to build the index. Worse, we run into issues quickly with corrupted zips (we found out Maven3 could also produce some of those, not just Buildr :)).
> Hugues Malphettes provided an other way to access the MANIFEST.MF without building the complete index.
> Around line 58 of packaging.rb
> # :call-seq:
> #   from_zip(file) => manifest
> #
> # Parse the MANIFEST.MF entry of a ZIP (or JAR) file and return a new Manifest.
> def from_zip(file)
>  Zip::ZipInputStream::open(file.to_s) { |io|
>    while (entry = io.get_next_entry)
>      if entry.name == 'META-INF/MANIFEST.MF'
>        return Manifest.parse io.read rescue Manifest.new
>      end
>    end
>  }
>  return Manifest.new
> #            Zip::ZipFile.open(file.to_s) do |zip|
> #              Manifest.parse zip.read('META-INF/MANIFEST.MF') rescue
> Manifest.new
> #            end
> end

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira