Just an update to all on what I ended up doing. The
Video::FourCC::Info module is now uploaded to CPAN and is slowly
propagating across the mirrors.

I ended up using SQLite as a data backend. I dropped it into the
lib/Video/FourCC directory, so that it is in the same place as
Info.pm. The module finds the SQLite data via:

# Look for the data file in the same folder as this module
my $data = File::Spec->catfile(
  File::Basename::dirname(__FILE__),
  'codecs.dat'
);

Which might not be ideal and is thus subject to change in the future.
But so far it looks pretty good. I made sure Module::Build would not
ignore this file by adding this parameter:

$builder->add_build_element('dat'); # where $builder is a Module::Build object

It works on Windows (under Strawberry Perl) as well as Linux. An
outstanding bug has to do with SQLite itself (or rather, the perl
DBD::SQLite binding), because "sqlite_version" is used only once (in
the upstream SQLite driver). That's why there are lots of failures
right now for version 1.0. Some of them were fixed for 1.1, but I
still haven't figured out how to best fix it.

It seems DBD::SQLite isn't all that well maintained, and the bug has
been outstanding in the Request Tracker for some time now.

Cheers,

Jonathan

On Thu, Jan 15, 2009 at 12:19 AM, Ben Morrow <b...@morrow.me.uk> wrote:
>
> Quoth jonathan.i...@gmail.com ("Jonathan Yu"):
>> All:
>>
>> I like the idea of using SQLite because it's small, runs on most
>> operating systems and fast. It's also got less memory overhead, which
>> is certainly a good thing.
>>
>> However, with respect to using File::ShareDir; the module finds the
>> directory appropriately, but I'm at a loss as to how to configure
>> Module::Build to install it there.
>>
>> I suppose I could list File::ShareDir as a build requirement and just
>> force the file to be put where File::ShareDir says it should be, but
>> it's definitely less elegant than Module::Install, where a subclass
>> already provides functionality to put things in the Shared directory
>> (I believe it's M::I::Shared)
>>
>> Any thoughts on Module::Build and sharedir files?
>
> If I'm reading the code right, you need to copy your shared files into
> somewhere under blib/lib/auto/Foo/Bar for distribution Foo-Bar or module
> Foo::Bar sometime during ACTION_build, and then it will get installed in
> the right place later. Of course you should be using File::Spec instead
> of specifying that path in Unix format, and by 'blib' I mean
> $self->blib, and so on...
>
> However, I don't use M::B, so I could be wrong :).
>
> Ben
>
>

Reply via email to