Thanks Jean,

It occurred to me that I would still need h2ph to invoke the getdents syscall anyway, unless there is some alternatives I'm not aware.

Maybe using XS?

Em 23/04/2017 01:14, Jean-Damien Durand escreveu:
Hello,

For Makefile-style distributions generated by dzil, custom code is easy
to add, example for size_t type:


[Prereqs / ConfigureRequires]
Config::AutoConf = 0

[MakeMaker::Awesome]
delimiter = |
header = |use Config::AutoConf;
header = |
header = |my $size_of_size_t =
Config::AutoConf->check_sizeof_type('size_t');

Combining Dist::Zilla::Plugin::MakeMaker::Awesome and Config::AutoConf
works well for me.

Regards, Jean-Damien.


On 04/22/2017 09:49 PM, Alceu Rodrigues de Freitas Junior via
cpan-testers-discuss wrote:
Hello Kent,

Thanks for sharing all this info.

I guess it makes a lot of sense trying to use a compiler (that should
be available anyway on Linux to install Perl distributions) to get
this information.

The solution that comes to my mind it to write a small C program to
write down long size instead of using h2ph... it could write to the
__DATA__ section of the corresponding module, for example.

I'm no C programmer (so far), but I guess doing that in C should be
trivial. On the other hand It seems to be more complicate to integrate
that with Dist::Zilla (or Makefile.PL) since I would need to compile
the C program and execute it.

I guess Dist::Zilla might have a plugin to execute arbitrary OS
commands, but if you're aware of any standard way of doing that,
please let me know.

Regards,
- Alceu

Em 14/02/2017 02:17, Kent Fredric escreveu:
On 7 February 2017 at 03:34, Alceu Rodrigues de Freitas Junior via
cpan-testers-discuss <cpan-testers-discuss@perl.org> wrote:
I just released a new distribution
(http://search.cpan.org/~arfreitas/Linux-NFS-BigDir-0.001/) but I
see that
is getting a lot of fails because h2ph is not configured.


There's a reasonable problem with general purpose h2ph if any of the
constants you depend upon from the system are implemented in terms of
"sizeof"

h2ph basically rewrites all calls to sizeof($argument) as
$sizeof{"$argument"}, and then leaves implementation of those sizeof
fields to the user... ( and then doesn't even warn when code uses
undefined sizeof values, and so just returns 0 ... which is almost
certainly wrong )[1]

Which creates a fun problem:

- You can't rely on h2ph because it has problems that can't be
answered without using a compiler
- You can't simply hardcode the constants yourself as they're
architecture dependent.

I've got a way around this downstream[2][3] by analysing the constants
people tend to need and running a bit of C code that generates the
right architecture-specific values on the end machine, but its not
really useful for upstream purposes.

It would be literally simpler to just write the necessary code
yourself in C and then ship that with your dist.

It seems icky because you have to rely on a compiler, but its kinda
tricky *not* to rely on a compiler.

Granted, as _long_ as you stick to Linux, and then restrict yourself
to a specific processor type, then simple values like the syscall-id
shouldn't change, as that's one of the things that Linux API has a
very hard line about[4], It may introduce new syscall-id values, or
cease responding to old ones, but ID-reuse doesn't seem to be a
problem.

But for anything else, the "more portable" solution is probably going
to require at least one call to a compiler somewhere.

1: https://rt.perl.org/Ticket/Display.html?id=127517
2:
https://github.com/gentoo-perl/perl-headers/blob/master/specs/_h2ph_pre.c

3: Relatively untested because the demand for it is so incredibly low,
probably as a result of aforementioned limitations
4: http://man7.org/tlpi/api_changes/

  • adding h2ph con... Alceu Rodrigues de Freitas Junior via cpan-testers-discuss
    • Re: adding... Olivier MenguĂ©
      • Re: ad... Alceu Rodrigues de Freitas Junior via cpan-testers-discuss
    • Re: adding... Kent Fredric
      • Re: ad... Alceu Rodrigues de Freitas Junior via cpan-testers-discuss
        • Re... Jean-Damien Durand
          • ... Alceu Rodrigues de Freitas Junior via cpan-testers-discuss
            • ... Kent Fredric

Reply via email to