Archive-Libarchive-XS

 view release on metacpan or  search on metacpan

maint/before_build.pl  view on Meta::CPAN

do { # symbol list

  if($alien->cflags =~ /-I(\S+)/)
  {
    my $include = dir($1);
    foreach my $line (map { $include->file($_)->slurp } qw( archive.h archive_entry.h ))
    {
      while($line =~ s/\b(archive_[A-Za-z0-9_]+)//)
      {
        $symbols{$1} = 1;
      }
    }
  }

  open(my $fh, '<', file(__FILE__)->parent->parent->file('symbols.txt'));
  foreach my $line (<$fh>)
  {
    chomp $line;
    $symbols{$line} = 1;
  }
  close $fh;

  my @deprecated = qw(
    archive_read_support_compression_all
    archive_read_support_compression_bzip2
    archive_read_support_compression_compress
    archive_read_support_compression_gzip
    archive_read_support_compression_lzip
    archive_read_support_compression_lzma
    archive_read_support_compression_none
    archive_read_support_compression_program
    archive_read_support_compression_program_signature
    archive_read_support_compression_rpm
    archive_read_support_compression_uu
    archive_read_support_compression_xz
    archive_read_open_file
    archive_read_finish
    archive_write_set_compression_bzip2
    archive_write_set_compression_compress
    archive_write_set_compression_gzip
    archive_write_set_compression_lzip
    archive_write_set_compression_lzma
    archive_write_set_compression_none
    archive_write_set_compression_program
    archive_write_set_compression_xz
    archive_write_open_file
    archive_write_finish
    archive_position_compressed
    archive_position_uncompressed
    archive_compression_name
    archive_compression

    archive_entry_set_ino64
    archive_entry_ino64
    archive_entry_stat32
    archive_entry_stat64
  );

  delete $symbols{$_} for @deprecated;

  my @not_real = qw(
    archive_acl
    archive_read
    archive_read_support_XXX
    archive_write_disk
    archive_read_open_XXX
    archive_platform
    archive_read_disk
    archive_entry_linkresolver
  );

  delete $symbols{$_} for @not_real;

  my @typedefs = qw(
    archive_entry
    archive_match
    archive_read_callback
    archive_skip_callback
    archive_seek_callback
    archive_write_callback
    archive_open_callback
    archive_close_callback
    archive_switch_callback
  );

  delete $symbols{$_} for @typedefs;

  file(__FILE__)->parent->parent->file('symbols.txt')->spew(join "\n", sort keys %symbols);

  delete $symbols{$_} for grep /_(w|utf8)$/, keys %symbols;

  my @wontimplement = qw(
    archive_read_add_callback_data
    archive_read_append_callback_data
    archive_read_prepend_callback_data
    archive_read_set_callback_data2
    archive_read_open_FILE
    archive_read_open_fd
    archive_read_data_into_fd
    archive_read_open_memory2
    archive_write_open_fd
    archive_write_open_FILE
    archive_entry_copy_gname
    archive_entry_copy_hardlink
    archive_entry_copy_pathname
    archive_entry_copy_symlink
    archive_entry_copy_uname
    archive_entry_copy_link
  );

  delete $symbols{$_} for @wontimplement;
};

do {
  use Pod::Abstract;
  use Mojo::Template;
  use JSON qw( to_json );
  my $mt = Mojo::Template->new;

  my $pa = Pod::Abstract->load_file(
    file(__FILE__)->parent->parent->parent->file(qw( lib Archive Libarchive XS.xs ))->stringify
  );

  $_->detach for $pa->select('//#cut');

  my %functions;

  foreach my $pod ($pa->children)
  {
    if($pod->pod =~ /^=head2 ([A-Za-z_0-9]+)/)
    {
      my $name = $1;



( run in 1.065 second using v1.01-cache-2.11-cpan-d7f47b0818f )