[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-24 Thread Sisyphus via RT
Tue Jun 24 03:47:40 2014: Request 95809 was acted upon.
Transaction: Correspondence added by SISYPHUS
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 



Fixed as of Inline-0.55_01


[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-24 Thread Ed J via RT
Tue Jun 24 09:20:20 2014: Request 95809 was acted upon.
Transaction: Correspondence added by ETJ
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: resolved
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Would still like to make a test for this - reopening.


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-23 Thread sisyphus1
-Original Message- 
From: Ed J via RT

Sent: Monday, June 23, 2014 11:12 AM

Forgive my ignorance, including of MakeMaker - would it be possible to 
make a test for the generality of building a module, by installing it into 
a temporary directory, probably under /tmp? This would probably require 
using something like SITE_INSTALL? If that's right, let me know (or 
correct me), and I'll knock something up.


There's now modules/Math-Simple-1.23 and modules/Boo-2.01 that ship with the 
Inline source. (They're laid out differently - which is the reason that 
there's *two* modules.)


I'm thinking along the lines that the test could be constructed so that we:

1) cd to modules/Math-Simple-1.23;
2) check that 'perl -Mblib Makefile.PL INSTALL_BASE=../../_Inline_test' 
succeeds;

3) check that  '$Config{make} test' succeeds;
4) check that  '$Config{make} install' succeeds;
5) check that  '$Config{make} realclean' succeeds;

and do the same for modules/Boo-2.01.
I was thinking that could be done via system commands, but I'm not sure if 
that's such a good idea given the odd configurations that some smokers seem 
to come up with.


Anyway, then we can rely on 'make clean' to clean up the installed modules 
(since it already cleans up the _Inline_test directory).


Trying to find the temporary directory seems messy to me - though File::Spec 
probably helps out. Since we already know that _Inline_test is writable, why 
not install the modules into there and let 'make clean' remove them ?


I don't regard such tests as critical (obviously), but they would be a 
useful addition to the test suite , imo - irrespective of precisely *how* 
you choose to implement them.


Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-23 Thread sisyph...@optusnet.com.au via RT
Mon Jun 23 11:06:50 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: Ed J via RT
Sent: Monday, June 23, 2014 11:12 AM

 Forgive my ignorance, including of MakeMaker - would it be possible to 
 make a test for the generality of building a module, by installing it into 
 a temporary directory, probably under /tmp? This would probably require 
 using something like SITE_INSTALL? If that's right, let me know (or 
 correct me), and I'll knock something up.

There's now modules/Math-Simple-1.23 and modules/Boo-2.01 that ship with the 
Inline source. (They're laid out differently - which is the reason that 
there's *two* modules.)

I'm thinking along the lines that the test could be constructed so that we:

1) cd to modules/Math-Simple-1.23;
2) check that 'perl -Mblib Makefile.PL INSTALL_BASE=../../_Inline_test' 
succeeds;
3) check that  '$Config{make} test' succeeds;
4) check that  '$Config{make} install' succeeds;
5) check that  '$Config{make} realclean' succeeds;

and do the same for modules/Boo-2.01.
I was thinking that could be done via system commands, but I'm not sure if 
that's such a good idea given the odd configurations that some smokers seem 
to come up with.

Anyway, then we can rely on 'make clean' to clean up the installed modules 
(since it already cleans up the _Inline_test directory).

Trying to find the temporary directory seems messy to me - though File::Spec 
probably helps out. Since we already know that _Inline_test is writable, why 
not install the modules into there and let 'make clean' remove them ?

I don't regard such tests as critical (obviously), but they would be a 
useful addition to the test suite , imo - irrespective of precisely *how* 
you choose to implement them.

Cheers,
Rob 




[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-22 Thread Ed J via RT
Sun Jun 22 21:12:16 2014: Request 95809 was acted upon.
Transaction: Correspondence added by ETJ
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Sat Jun 21 00:21:40 2014, SISYPHUS wrote:
 There's no testing of this specific bugfix in the test suite, though
 there are the 2 demo modules modules/Math-Simple-1.23 and modules/Boo-
 2.01 - both of which should build and test fine as a result of this
 bugfix.
 Math-Simple-1.23 has always built fine, but Boo-2.01 (added with this
 latest release) does not build correctly with earlier versions of
 Inline.

Forgive my ignorance, including of MakeMaker - would it be possible to make a 
test for the generality of building a module, by installing it into a temporary 
directory, probably under /tmp? This would probably require using something 
like SITE_INSTALL? If that's right, let me know (or correct me), and I'll knock 
something up.


[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-20 Thread Sisyphus via RT
Sat Jun 21 00:21:40 2014: Request 95809 was acted upon.
Transaction: Correspondence added by SISYPHUS
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Inline-0.55_01, which contains the fix for this bug was released to CPAN on 
19th June 2014.

There's no testing of this specific bugfix in the test suite, though there are 
the 2 demo modules modules/Math-Simple-1.23 and modules/Boo-2.01 - both of 
which should build and test fine as a result of this bugfix.
Math-Simple-1.23 has always built fine, but Boo-2.01 (added with this latest 
release) does not build correctly with earlier versions of Inline.

Cheers,
Rob


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-15 Thread Jason McCarver via RT
Sun Jun 15 17:55:25 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Sun, 15 Jun 2014 00:25:16 -0400
Sisyphus via RT bug-inl...@rt.cpan.org wrote:

 URL: https://rt.cpan.org/Ticket/Display.html?id=95809 
 
 Sub satisfy_makefile_dep() would perhaps be better placed in MakeMaker.pm but 
 I don't see any imperative to move it there - especially since it's doing 
 stuff that was already being done in Inline.pm (as you noted).

I hadn't really thought about that.  I guess I could see it in either place, 
but if it's moved to MakeMaker, then MakeMaker will have to be included in the 
command run by the generated Makefile which right now only includes Inline.  I 
guess in that sense it made sense for it to remain in the Inline module since 
it's code that's being using when Inline is in _INSTALL_ mode, not while it's 
generating the Makefile when perl Makefile.PL is run.  Or something. :)

 I'll get Inline-0.55_01 out in the next week, and we'll see how it goes.
 
 Thanks for your work !!

Sounds great!  I enjoyed working with you on this, thanks for all the help and 
input...

Jason



[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-14 Thread Sisyphus via RT
Sun Jun 15 00:25:15 2014: Request 95809 was acted upon.
Transaction: Correspondence added by SISYPHUS
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


 Hopefully that'll make more sense when you have a look at it.

Looks good to me.
Sub satisfy_makefile_dep() would perhaps be better placed in MakeMaker.pm but I 
don't see any imperative to move it there - especially since it's doing stuff 
that was already being done in Inline.pm (as you noted).

I'll get Inline-0.55_01 out in the next week, and we'll see how it goes.

Thanks for your work !!

Cheers,
Rob


[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-13 Thread Sisyphus via RT
Fri Jun 13 06:29:43 2014: Request 95809 was acted upon.
Transaction: Correspondence added by SISYPHUS
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


How about the attached version of lib/Inline/Makemaker.pm ?

It seems to do things right for me on Windows.

Cheers,
Rob
package Inline::MakeMaker;

$Inline::MakeMaker::VERSION = '0.55';
$Inline::MakeMaker::VERSION = eval $Inline::MakeMaker::VERSION;
@EXPORT = qw(WriteMakefile WriteInlineMakefile);

use strict;
use base 'Exporter';
use ExtUtils::MakeMaker();
use Carp;

sub WriteInlineMakefile {
#warn END;
#
#Inline::MakeMaker::WriteInlineMakefile() is deprecated as of Inline-0.44.
#Inline::MakeMaker::WriteMakefile() should be used instead.
#
#END
goto WriteMakefile;
}

sub WriteMakefile {
my %args = @_;
my $name = $args{NAME}
  or croak Inline::MakeMaker::WriteMakefile requires the NAME parameter\n;
my $version = '';

croak END unless (defined $args{VERSION} or defined $args{VERSION_FROM});
Inline::MakeMaker::WriteMakefile requires either the VERSION or VERSION_FROM
parameter.
END
if (defined $args{VERSION}) {
$version = $args{VERSION};
}
else {
$version = ExtUtils::MM_Unix-parse_version($args{VERSION_FROM})
  or croak Can't determine version for $name\n;
}
croak END unless $version =~ /^\d\.\d\d$/;
Invalid version '$version' for $name.
Must be of the form '#.##'. (For instance '1.23')
END

# Provide a convenience rule to clean up Inline's messes
$args{clean} = { FILES = _Inline *.inl  }
unless defined $args{clean};

# Add Inline to the dependencies
$args{PREREQ_PM}{Inline} = '0.44' unless defined $args{PREREQ_PM}{Inline};

my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);

my (@objects, @obj_rules);

if (@{$mm-{PMLIBDIRS}}  $mm-{PM}) { #line 55 SIS alteration
# Sort them longest first so we'll match subdirectories before their parents
my @libdirs = sort { length($b) = length($a) } @{$mm-{PMLIBDIRS}};

for my $path (keys %{$mm-{PM}}) {
for my $lib (@libdirs) {
if (index($path,$lib) == 0) {
my ($vol, $dirs, $file) = File::Spec-splitpath(substr($path, length($lib)+1));
my @dirs = File::Spec-splitdir($dirs);
pop @dirs unless length($dirs[$#dirs]);
$file =~ s/\.[^.]+$//;

push @objects, join('::', @dirs, $file);
push @obj_rules, join('-', @dirs, $file.inl);
last;
}
croak Failed to find module path for '$path';
}
}
} else {
# no modules found in PMLIBDIRS so assume we've just got $name to do
@objects = $name;
$name =~ s/::/-/g;
@obj_rules = ($name.inl);
#@obj_rules = (split(/::/, $name))[-1].'.inl';
}

if (@objects) {
open MAKEFILE, ' Makefile'
  or croak Inline::MakeMaker::WriteMakefile can't append to Makefile:\n$!;

print MAKEFILE MAKEFILE;
# Well, not quite. Inline::MakeMaker is adding this:

# --- MakeMaker inline section:

MAKEFILE
for (0..$#objects) {
print MAKEFILE MAKEFILE;
$obj_rules[$_]: \$(TO_INST_PM)
	\$(PERL) -Mblib -MInline=NOISY,_INSTALL_ -M$objects[$_] -e1 $version \$(INST_ARCHLIB)
	\$(PERL) -e open WR, '', '$obj_rules[$_]' unless -e '$obj_rules[$_]';
MAKEFILE
}

print MAKEFILE \npure_all :: ,join(' ',@obj_rules),\n;

print MAKEFILE MAKEFILE;

# The End is here.
MAKEFILE

close MAKEFILE;
}
}

1;


[rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-11 Thread Sisyphus via RT
Wed Jun 11 03:24:13 2014: Request 95809 was acted upon.
Transaction: Correspondence added by SISYPHUS
   Queue: Inline
 Subject: [PATCH] Using Inline in a distribution with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Mon Jun 09 22:45:21 2014, s...@parasite.cc wrote:
 Ok I'll check into that too :). Now I just have to find some time this
 week...

Hi Jason,

The problem seems to be mostly fixed if, at line 55 of (your patched) 
lib/Inline/Makemaker.pm we change:

if ($mm-{PMLIBDIRS}  $mm-{PM}) {
to:
if (@{$mm-{PMLIBDIRS}}  $mm-{PM}) {

That at least allows both layouts to build and install as desired. On the 
perls I've just tested, an array reference is true even if the array being 
referenced is empty - hence the need for the alteration.
However, that change doesn't fix the annoyance of having the compilation re-run 
during each of the make steps (which happens because the specified .inl target 
is not met).

Incidentally, for a long time Inline has shipped with the demo module named 
Math::Simple-1.23.
It was always packed into the source as:

modules/Math/Simple/Changes
modules/Math/Simple/Makefile.PL
modules/Math/Simple/MANIFEST
modules/Math/Simple/Simple.pl
modules/Math/Simple/test.pl

In git (https://github.com/ingydotnet/inline-pm), I've now rearranged that as 
the more usual:

modules/Math-Simple-1.23/Changes
modules/Math-Simple-1.23/Makefile.PL
modules/Math-Simple-1.23/MANIFEST
modules/Math-Simple-1.23/Simple.pl
modules/Math-Simple-1.23/test.pl

And I've also added a second demo which is essentially the same distro as the 
one we've been using as our reference. (I've changed the names of the modules 
from Foo, Foo::Bar, and Foo::Bar::Baz to Boo, Boo::Far and Boo::Far::Faz - 
other than that it's the same).

So, in git, you'll also find:

modules/Boo-2.01/lib/Boo.pm
modules/Boo-2.01/lib/Boo/Far.pm
modules/Boo-2.01/lib/Boo/Far/Faz.pm
modules/Boo-2.01/Makefile.PL
modules/Boo-2.01/MANIFEST
modules/Boo-2.01/t/boo.t

These files will, of course ship with future Inline releases as demos of the 2 
layouts.
Naturally, what we want is for both of those demos to build correctly out of 
the box.

With the above alteration to your patched MakeMaker.pm I think they do that - 
except that Math-Simple-1.23 wants to recompile the C code at every 'make' step.

Cheers,
Rob




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-09 Thread Jason McCarver via RT
Mon Jun 09 22:45:21 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Ok I'll check into that too :). Now I just have to find some time this week...


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-08 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT


I think I'd like to look into that problem.  May be over the weekend 
before I have a chance though.


I think there's another hiccup, too.
Using the patched Inline-0.55, the demo module in modules/Math/Simple (in 
Inline-0.55 source) then fails to build as there's no

# --- MakeMaker inline section written into the generated Makefile.

It would be nice if we can get the behaviour we want for the lib layout 
without breaking that Math::Simple demo ;-)


Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-08 Thread sisyph...@optusnet.com.au via RT
Sun Jun 08 09:18:53 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: Jason McCarver via RT

 I think I'd like to look into that problem.  May be over the weekend 
 before I have a chance though.

I think there's another hiccup, too.
Using the patched Inline-0.55, the demo module in modules/Math/Simple (in 
Inline-0.55 source) then fails to build as there's no
# --- MakeMaker inline section written into the generated Makefile.

It would be nice if we can get the behaviour we want for the lib layout 
without breaking that Math::Simple demo ;-)

Cheers,
Rob 




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-04 Thread sisyphus1



-Original Message- 
From: Jason McCarver via RT


It looks like a line of the patch was applied to the wrong location in 
Inline.pm.


Sorry 'bout that.
Fixing it takes care of the problem.


Hopefully we're getting close! :)


I think so.

One thing I have noticed is that, for the distro we're looking at, if the 
Foo module loads (uses) Foo::Bar and Foo::Bar::Baz, then the Foo.inl target 
never gets met. This results in Inline compiling the C code for each of 
'make', 'make test' and 'make install'.

Just insert a:

use Foo::Bar;
use Foo::Bar::Baz;

in Foo.pm, and rebuild - you should see what I mean.

Not sure why Foo.inl never appears under that scenario ... haven't had time 
to even think about it.
It doesn't matter greatly because 'make install' still installs exactly what 
we want it to install - and no future compilation occurs.


Do you want to do anything about that aspect ?
I'm not greatly fussed - if you don't want to do anything about it, just let 
me know and I'll push out a new devel release (0.55_01)  that includes the 
patches to Inline.pm and MakeMaker.pm that you've already provided. (It can 
always be addressed at a later stage.)
But if you do want to do something about that (and presently have the time) 
then I'll wait for the additional patch before I release 0.55_01.


Thanks for the work you've done !!

Cheers,
Rob





Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-04 Thread sisyph...@optusnet.com.au via RT
Wed Jun 04 05:11:58 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 




-Original Message- 
From: Jason McCarver via RT

 It looks like a line of the patch was applied to the wrong location in 
 Inline.pm.

Sorry 'bout that.
Fixing it takes care of the problem.

 Hopefully we're getting close! :)

I think so.

One thing I have noticed is that, for the distro we're looking at, if the 
Foo module loads (uses) Foo::Bar and Foo::Bar::Baz, then the Foo.inl target 
never gets met. This results in Inline compiling the C code for each of 
'make', 'make test' and 'make install'.
Just insert a:

use Foo::Bar;
use Foo::Bar::Baz;

in Foo.pm, and rebuild - you should see what I mean.

Not sure why Foo.inl never appears under that scenario ... haven't had time 
to even think about it.
It doesn't matter greatly because 'make install' still installs exactly what 
we want it to install - and no future compilation occurs.

Do you want to do anything about that aspect ?
I'm not greatly fussed - if you don't want to do anything about it, just let 
me know and I'll push out a new devel release (0.55_01)  that includes the 
patches to Inline.pm and MakeMaker.pm that you've already provided. (It can 
always be addressed at a later stage.)
But if you do want to do something about that (and presently have the time) 
then I'll wait for the additional patch before I release 0.55_01.

Thanks for the work you've done !!

Cheers,
Rob






Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-04 Thread Jason McCarver via RT
Thu Jun 05 00:00:57 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


I think I'd like to look into that problem.  May be over the weekend before I 
have a chance though.

If you're wanting to release quickly that's fine too.

Thank you for being so receptive and offering help!


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-03 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT



http://cac.parasite.cc/~slam/Inline


Kept getting a gateway timeout error.
I'll install mercurial and check it out that way (when I get a chance).

For the Foo distro I'm currently using:
http://www.sisyphusion.tk/scratch/Foo-broken.tar.gz

For the Inline version I'm using:
http://www.sisyphusion.tk/scratch/Inline-0.55-patched.tar.gz

(I believe it's just Inline-0.55 with your most recent patch applied.)

And with those Foo and Inline versions,  I'm getting the Can't open  for 
output. error mentioned in my previous post.


I'm on MS Windows 7 and my make flavour is 'dmake'. I've tested on both 
5.16.0 and 5.18.0 - same error.


Cheers,
Rob



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-03 Thread sisyph...@optusnet.com.au via RT
Tue Jun 03 04:36:36 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: Jason McCarver via RT

 http://cac.parasite.cc/~slam/Inline

Kept getting a gateway timeout error.
I'll install mercurial and check it out that way (when I get a chance).

For the Foo distro I'm currently using:
http://www.sisyphusion.tk/scratch/Foo-broken.tar.gz

For the Inline version I'm using:
http://www.sisyphusion.tk/scratch/Inline-0.55-patched.tar.gz

(I believe it's just Inline-0.55 with your most recent patch applied.)

And with those Foo and Inline versions,  I'm getting the Can't open  for 
output. error mentioned in my previous post.

I'm on MS Windows 7 and my make flavour is 'dmake'. I've tested on both 
5.16.0 and 5.18.0 - same error.

Cheers,
Rob




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-03 Thread Jason McCarver via RT
Tue Jun 03 08:36:25 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Tue, 3 Jun 2014 04:36:36 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 URL: https://rt.cpan.org/Ticket/Display.html?id=95809 
 
 -Original Message- 
 From: Jason McCarver via RT
 
  http://cac.parasite.cc/~slam/Inline
 
 Kept getting a gateway timeout error.
 I'll install mercurial and check it out that way (when I get a
 chance).

I had to fix a broken DNS record for that server last night, hopefully
that was the problem and if so it should work soon (2014-06-03 8:00pm
CST, 2014-06-04 1:00am UTC).

 
 For the Foo distro I'm currently using:
 http://www.sisyphusion.tk/scratch/Foo-broken.tar.gz
 
 For the Inline version I'm using:
 http://www.sisyphusion.tk/scratch/Inline-0.55-patched.tar.gz
 
 (I believe it's just Inline-0.55 with your most recent patch applied.)
 
 And with those Foo and Inline versions,  I'm getting the Can't open
 for output. error mentioned in my previous post.
 
 I'm on MS Windows 7 and my make flavour is 'dmake'. I've tested on
 both 5.16.0 and 5.18.0 - same error.

I'll give yours a try tonight and see if I can replicate the problem.
I do have a windows 7 machine (I've never installed perl on windows
though) so maybe I can try it there too.

Jason



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-02 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT


 After digging a bit I found that ExtUtils::MakeMaker was already locating 
all modules to be installed and placing that list in $mm-{PM} (where $mm 
is the returned object from the call to 
ExtUtils::MakeMaker::WriteMakefile).


I didn't know that. (You already know more about Inline than I do.)

There is another attribute, $mm-{PMLIBDIRS} that contains a list of 
directories those modules reside in.  I added some code to use those two 
lists to generate the rules to add to the makefile without having to scan 
for modules ourselves.


Didn't know that, either.
Yours is therefore probably a smarter solution than the one I envisaged. 
Mine is a solution that hacks (solely) I::MM to recurse thru the 'lib' 
directory and locate all of the *.pm files (using File::Find).


However, with your patch, for the distro you provided, I'm getting:

##
C:\_32\pscrpt\Foo-brokenperl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Foo
Writing MYMETA.yml and MYMETA.json

C:\_32\pscrpt\Foo-brokendmake
cp lib/Foo/Bar/Baz.pm blib\lib\Foo\Bar\Baz.pm
cp lib/Foo.pm blib\lib\Foo.pm
cp lib/Foo/Bar.pm blib\lib\Foo\Bar.pm
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo::Bar::Baz 
-e1 2.01 blib\arch

validate Stage
Starting Build Preprocess Stage
get_maps Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
 Starting perl Makefile.PL Stage
 Finished perl Makefile.PL Stage

 Starting make Stage
 Finished make Stage

 Starting make install Stage
 Finished make install Stage

 Starting Cleaning Up Stage
 Finished Cleaning Up Stage

Finished Build Compile Stage

Can't open  for output.


at C:\_32\pscrpt\Foo-broken\blib\lib/Foo/Bar/Baz.pm line 9.
BEGIN failed--compilation aborted at 
C:\_32\pscrpt\Foo-broken\blib\lib/Foo/Bar/Baz.pm line 15.

Compilation failed in require.
BEGIN failed--compilation aborted.
dmake:  Error code 255, while making 'Foo-Bar-Baz.inl'

C:\_32\pscrpt\Foo-broken
##

This might just be *my* mistake ... I might have messed something up. (I 
don't think so but.)

I'll have to check again tomorrow night.

What version of perl are you running ?

Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-06-02 Thread Jason McCarver via RT
Mon Jun 02 21:18:33 2014: Request 95809 was acted upon.
Transaction: Correspondence added by trueability@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Mon, 2 Jun 2014 08:35:55 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 I didn't know that. (You already know more about Inline than I do.)

All I know is just from what I've seen while digging around, trying to
get an understanding of how the MakeMaker stuff works :)


  There is another attribute, $mm-{PMLIBDIRS} that contains a list
  of directories those modules reside in.  I added some code to use
  those two lists to generate the rules to add to the makefile
  without having to scan for modules ourselves.
 
 Didn't know that, either.
 Yours is therefore probably a smarter solution than the one I
 envisaged. Mine is a solution that hacks (solely) I::MM to recurse
 thru the 'lib' directory and locate all of the *.pm files (using
 File::Find).

My hope was that if we could use what EU::MM already located that we
would support the same code as EU:MM.  It appears to me that one can
change the PMLIBDIRS in the Makefile.PL and so assuming 'lib' is the
only directory that would contain modules is a bad assumption.
Obviously I'd like to stay away from assumptions where I can!

 
 However, with your patch, for the distro you provided, I'm getting:
 
 ##
 C:\_32\pscrpt\Foo-brokenperl Makefile.PL
 Checking if your kit is complete...
 Looks good
 Writing Makefile for Foo
 Writing MYMETA.yml and MYMETA.json
 
 C:\_32\pscrpt\Foo-brokendmake
 cp lib/Foo/Bar/Baz.pm blib\lib\Foo\Bar\Baz.pm
 cp lib/Foo.pm blib\lib\Foo.pm
 cp lib/Foo/Bar.pm blib\lib\Foo\Bar.pm
 C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_
 -MFoo::Bar::Baz -e1 2.01 blib\arch
 validate Stage
 Starting Build Preprocess Stage
 get_maps Stage
 Finished Build Preprocess Stage
 
 Starting Build Parse Stage
 Finished Build Parse Stage
 
 Starting Build Glue 1 Stage
 Finished Build Glue 1 Stage
 
 Starting Build Glue 2 Stage
 Finished Build Glue 2 Stage
 
 Starting Build Glue 3 Stage
 Finished Build Glue 3 Stage
 
 Starting Build Compile Stage
   Starting perl Makefile.PL Stage
   Finished perl Makefile.PL Stage
 
   Starting make Stage
   Finished make Stage
 
   Starting make install Stage
   Finished make install Stage
 
   Starting Cleaning Up Stage
   Finished Cleaning Up Stage
 
 Finished Build Compile Stage
 
 Can't open  for output.
 
 
 at C:\_32\pscrpt\Foo-broken\blib\lib/Foo/Bar/Baz.pm line 9.
 BEGIN failed--compilation aborted at 
 C:\_32\pscrpt\Foo-broken\blib\lib/Foo/Bar/Baz.pm line 15.
 Compilation failed in require.
 BEGIN failed--compilation aborted.
 dmake:  Error code 255, while making 'Foo-Bar-Baz.inl'
 
 C:\_32\pscrpt\Foo-broken
 ##
 
 This might just be *my* mistake ... I might have messed something up.
 (I don't think so but.)
 I'll have to check again tomorrow night.
 
 What version of perl are you running ?

Hrm that's strange.. I don't see that but at this point I have enough
versions of various distributions that I'm not sure if I'm testing
against the same thing you are!  I tried to replicate that error but it
seems to work for me.

I'm running perl 5.18.1 under gentoo linux (custom perl compile, not
using the gentoo package). You?

So to try to make sure we're on the same page, I've uploaded a couple
things (see below for link).  I'd like to get the distribution you're
testing against and maybe the Inline source you're using that is failing
so I can see if I can make it happen too.

http://cac.parasite.cc/~slam/Inline

In that directory you will find a few things:
Foo-fixed.tar.gz - this was one you attached that is working with the patch
Foo-mjm.tar.gz - this (I belive) is the one I initially submitted to you, and 
it is working with the patch for me
Inline-mjm.tar.gz - this is the source I'm using that I built the patch from.  
This is a snapshot of the mercurial repo I'm using
Inline-mjm/ - directory of Inline-mjm.tar.gz extracted

I've also made available the mercurial repo I'm using:
http://cac.parasite.cc:8000

it has two branches 
'default' which is the baseline Inline-0.55 code I started with
'mjm' which is the branch with my changes applied

you can clone the repo via:
hg clone http://cac.parasite.cc:8000 Inline

if you do that and wnat to see my code, you'll need to change to the mjm branch
hg update -C mjm

If you send me what you're testing with I'll try it out too and hopefully I can 
reproduce the error
so I can fix it!

Thanks,
Jason



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-31 Thread Jason McCarver via RT
Sat May 31 17:58:18 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Wed, 28 May 2014 05:55:23 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 And I think it would be straightforward to get Inline::MakeMaker to do this.
 I::MM simply has to recurse through the ./lib folder and create the relevant 
 entry in the Makefile for every pm file it finds (irrespective of whether 
 that pm file actually uses Inline).
 
 I think this corresponds to your shotgun approach.
 I don't think it's ugly. For sure it's an unnecessary step for the modules 
 that don't use Inline but (for those modules) it  does no harm other than to 
 consume a fraction of a second during the make stage.

Ok, so you talked me into the shotgun approach :)  After digging a
bit I found that ExtUtils::MakeMaker was already locating all modules
to be installed and placing that list in $mm-{PM} (where $mm is the
returned object from the call to ExtUtils::MakeMaker::WriteMakefile).

There is another attribute, $mm-{PMLIBDIRS} that contains a list of
directories those modules reside in.  I added some code to use those
two lists to generate the rules to add to the makefile without having
to scan for modules ourselves.

Let me know what you think.  It worked for my single-Makefile.PL
distribution and for your Foo-fixed distribution.

This method requires no additional config options nor documentation.

Thanks,
Jason

diff -r 8a9bc8d83cc9 -r 3474e7b1aab0 Inline.pm
--- a/Inline.pm	Thu May 15 07:03:36 2014 -0500
+++ b/Inline.pm	Sat May 31 16:52:08 2014 -0500
@@ -515,12 +515,12 @@ sub load {
 my $o = shift;
 
 if ($o-{CONFIG}{_INSTALL_}) {
-	my $inline = $o-{API}{modfname}.inl;
+	my $inline = $o-{API}{modinlname};
 	open INLINE,  $inline
 	  or croak M24_open_for_output_failed($inline);
 	print INLINE *** AUTOGENERATED by Inline.pm ***\n\n;
 	print INLINE This file satisfies the make dependency for ;
-	print INLINE $o-{API}{modfname}.pm\n;
+	print INLINE $o-{API}{module}\n;
 	close INLINE;
 	return;
 }
@@ -983,6 +983,7 @@ sub install {
 my @modparts = split(/::/,$o-{API}{module});
 $o-{API}{modfname} = $modparts[-1];
 $o-{API}{modpname} = File::Spec-catdir(@modparts);
+$o-{API}{modinlname} = join('-',@modparts).'.inl';
 $o-{API}{suffix} = $o-{INLINE}{ILSM_suffix};
 $o-{API}{build_dir} = File::Spec-catdir($o-{INLINE}{DIRECTORY},'build',
   $o-{API}{modpname});
diff -r 8a9bc8d83cc9 -r 3474e7b1aab0 lib/Inline/MakeMaker.pm
--- a/lib/Inline/MakeMaker.pm	Thu May 15 07:03:36 2014 -0500
+++ b/lib/Inline/MakeMaker.pm	Sat May 31 16:52:08 2014 -0500
@@ -23,7 +23,6 @@ sub WriteMakefile {
 my %args = @_;
 my $name = $args{NAME}
   or croak Inline::MakeMaker::WriteMakefile requires the NAME parameter\n;
-my $object = (split(/::/, $name))[-1];
 my $version = '';
 
 croak END unless (defined $args{VERSION} or defined $args{VERSION_FROM});
@@ -43,30 +42,68 @@ Must be of the form '#.##'. (For instanc
 END
 
 # Provide a convenience rule to clean up Inline's messes
-$args{clean} = { FILES = _Inline $object.inl }
+$args{clean} = { FILES = _Inline *.inl  }
 unless defined $args{clean};
+
 # Add Inline to the dependencies
 $args{PREREQ_PM}{Inline} = '0.44' unless defined $args{PREREQ_PM}{Inline};
 
-ExtUtils::MakeMaker::WriteMakefile(%args);
+my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
 
-open MAKEFILE, ' Makefile'
-  or croak Inline::MakeMaker::WriteMakefile can't append to Makefile:\n$!;
+my (@objects, @obj_rules);
 
-print MAKEFILE MAKEFILE;
+if ($mm-{PMLIBDIRS}  $mm-{PM}) {
+# Sort them longest first so we'll match subdirectories before their parents
+my @libdirs = sort { length($b) = length($a) } @{$mm-{PMLIBDIRS}};
+
+for my $path (keys %{$mm-{PM}}) {
+for my $lib (@libdirs) {
+if (index($path,$lib) == 0) {
+my ($vol, $dirs, $file) = File::Spec-splitpath(substr($path, length($lib)+1));
+my @dirs = File::Spec-splitdir($dirs);
+pop @dirs unless length($dirs[$#dirs]);
+$file =~ s/\.[^.]+$//;
+
+push @objects, join('::', @dirs, $file);
+push @obj_rules, join('-', @dirs, $file.inl);
+last;
+}
+
+croak Failed to find module path for '$path';
+}
+}
+} else {
+# no modules found in PMLIBDIRS so assume we've just got $name to do
+@objects = $name;
+@obj_rules = (split(/::/, $name))[-1

Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-28 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT


.. so then it's back to how does I::MM know which modules need to 
be 'use'ed. My attempt at a

solution was to force the programmer to explicitly tell I::MM by way of
the INLINE_MODULES argument.  I do agree it would be better to not have
to do that.  However I believe that would mean one of the following
would need to be done:
 - shotgun approach and 'use' all modules in the distribution (seems ugly, 
possibly error-prone)


When I build the Foo.tar.gz source that you provided against Inline-0.55 
(having first removed the INLINE_MODULES = [qw(Foo::Bar Foo::Bar::Baz)], 
entry in the Makefile.PL), at the make stage the following commands get run:


###
C:\_32\pscrpt\Foo-brokendmake
cp lib/Foo/Bar/Baz.pm blib\lib\Foo\Bar\Baz.pm
cp lib/Foo.pm blib\lib\Foo.pm
cp lib/Foo/Bar.pm blib\lib\Foo\Bar.pm
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 2.01 
blib\arch

###

The commands we really want to be run there are:

###
C:\_32\pscrpt\Foo-brokendmake
cp lib/Foo/Bar/Baz.pm blib\lib\Foo\Bar\Baz.pm
cp lib/Foo.pm blib\lib\Foo.pm
cp lib/Foo/Bar.pm blib\lib\Foo\Bar.pm
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 2.01 
blib\arch
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo::Bar -e1 
2.01 blib\arch
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo::Bar::Baz 
-e1 2.01 blib\arch

###

In fact, the 
C:\MinGW\Perl516\bin\perl.exe -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 
2.01 blib\arch command is not needed - but it doesn't do any harm. (Foo.pm 
does not use Inline, not does it use a module that uses Inline, so nothing 
gets installed as a result of running that command.)


Therefore, instead of the generated Makefile terminating with the following 
(generated by Inline::MakeMaker):


###
# Well, not quite. Inline::MakeMaker is adding this:

# --- MakeMaker inline section:

Foo.inl : $(TO_INST_PM)
   $(PERL) -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 2.01 $(INST_ARCHLIB)

pure_all :: Foo.inl

# The End is here.
###

we want it to terminate with:

###
# Well, not quite. Inline::MakeMaker is adding this:

# --- MakeMaker inline section:

Foo.inl : $(TO_INST_PM)
   $(PERL) -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 2.01 $(INST_ARCHLIB)

pure_all :: Foo.inl

Bar.inl : $(TO_INST_PM)
   $(PERL) -Mblib -MInline=NOISY,_INSTALL_ -MFoo::Bar -e1 2.01 
$(INST_ARCHLIB)


pure_all :: Bar.inl

Baz.inl : $(TO_INST_PM)
   $(PERL) -Mblib -MInline=NOISY,_INSTALL_ -MFoo::Bar::Baz -e1 2.01 
$(INST_ARCHLIB)


pure_all :: Baz.inl

# The End is here.
###

And I think it would be straightforward to get Inline::MakeMaker to do this.
I::MM simply has to recurse through the ./lib folder and create the relevant 
entry in the Makefile for every pm file it finds (irrespective of whether 
that pm file actually uses Inline).


I think this corresponds to your shotgun approach.
I don't think it's ugly. For sure it's an unnecessary step for the modules 
that don't use Inline but (for those modules) it  does no harm other than to 
consume a fraction of a second during the make stage.


It becomes (possibly) error prone when someone wants to bundle something 
like:


Foo
Foo::Bar
Foo::lib::Bar


but I'd quite happily wait to cross that bridge if and when we come to it.

OTOH, it would require no new config options and no change to any 
documentation. All we need to do is to have I::MM loop recursively through 
the ./lib directory (if such a directory exists).

What do you think ?

I'll probably be without an internet connection from Thursday night until 
Monday night, but I'll take my laptop with me and test out a proof of 
concept regarding this proposal over that period.


Cheers,
Rob







Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-27 Thread Jason McCarver via RT
Tue May 27 10:16:00 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Mon, 26 May 2014 20:17:11 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 URL: https://rt.cpan.org/Ticket/Display.html?id=95809 
 
 -Original Message- 
 From: Jason McCarver via RT
 

 Incidentally, it only takes for Foo.pm to use Foo::Bar; and use 
 Foo::Bar::Baz; and the version *you* sent would also build and install as 
 desired. (Though in that case, every time I run 'dmake', 'dmake test' and 
 'dmake install' the C code recompiles - but it results in a correct install 
 in the end.)

Yes that makes sense since the XS gets built/compiled when the module
is initially 'use'ed.


 The distro you sent is tantalisingly close to working 

Please forgive the following rambling .. it's more of a stream of
conscience and less than fully thought out :)

I think the underlying problem here is how does Inline::MakeMaker know
which modules need to be 'use'ed as part of the make process.  The way
it works without the patch is by relying on the fact that
Inline::MakeMaker is being used in place of ExtUtils::MakeMaker.  

I believe I::MM currently makes the following assumptions:
 - There is one perl module per Makefile.PL (the layout you prefer I
   believe)
 - That module needs to be 'use'ed during 'make'

For your layout these assumptions are fine.  This basically means that
the programmer is explicitly telling I::MM which modules to process by
using I::MM instead of ExtUtils::MakeMaker

But for the layout I'm using that doesn't work so then it's back to how
does I::MM know which modules need to be 'use'ed.  My attempt at a
solution was to force the programmer to explicitly tell I::MM by way of
the INLINE_MODULES argument.  I do agree it would be better to not have
to do that.  However I believe that would mean one of the following
would need to be done:
 - shotgun approach and 'use' all modules in the distribution (seems
   ugly, possibly error-prone)
 - scan all modules somehow to find the ones that are using 'Inline'
   and just 'use' them during the 'make' process.  Also error-prone.

It seems like the second of those might be doable but I'm not sure how
ugly that would be :)

And of course I could be way off here, still trying to learn as I go
with Inline.


Jason



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyph...@optusnet.com.au via RT
Mon May 26 06:03:09 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 




-Original Message- 
From: Jason McCarver via RT

 I noticed that in your Foo.tar.gz that you originally built each module
 had its own Makefile.PL, like each was its own distribution.  For what I'm
 working on I have a single distribution containing multiple modules that
 use Inline.  I have changed the structure of my attached Foo distribution
 to mimic this.

AFAIK, both structures should give the same end result.
Turns out that while the structure I was using successfully builds and
installs, it doesn't actually install the compiled libraries  - so it's
inadequate on that score. (This also should be fixed.)

Although I prefer to avoid the layout you're wanting to use, it's certainly
used by plenty of (ie most) source distros on CPAN.
It's therefore valid - and ought to be better accommodated.
Better still if we can fix things so that it simply works without any need 
for additional config options.

In fact I'm hoping we can fix it without any need for additional
documentation, too - but that remains to be seen. In the meantime we have
your patches, to which I'll gladly resort if I don't come up with anything 
better.

Thanks for raising this, and for the patches !!

Cheers,
Rob 




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyphus1



-Original Message- 
From: Jason McCarver via RT



I noticed that in your Foo.tar.gz that you originally built each module
had its own Makefile.PL, like each was its own distribution.  For what I'm
working on I have a single distribution containing multiple modules that
use Inline.  I have changed the structure of my attached Foo distribution
to mimic this.


AFAIK, both structures should give the same end result.
Turns out that while the structure I was using successfully builds and
installs, it doesn't actually install the compiled libraries  - so it's
inadequate on that score. (This also should be fixed.)

Although I prefer to avoid the layout you're wanting to use, it's certainly
used by plenty of (ie most) source distros on CPAN.
It's therefore valid - and ought to be better accommodated.
Better still if we can fix things so that it simply works without any need 
for additional config options.


In fact I'm hoping we can fix it without any need for additional
documentation, too - but that remains to be seen. In the meantime we have
your patches, to which I'll gladly resort if I don't come up with anything 
better.


Thanks for raising this, and for the patches !!

Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyphus1
-Original Message- 
From: sisyph...@optusnet.com.au via RT



Turns out that while the structure I was using successfully builds and
installs, it doesn't actually install the compiled libraries  - so it's
inadequate on that score. (This also should be fixed.)


My mistake. Nothing to be fixed wrt that structure - it works perfectly so 
long as you set it up correctly (ie as per modules/Math::Simple demo in the 
Inline source).
Attached Foo-4.tar.gz builds, tests, and installs fine - and there's no 
compilation to be done after 'make install' has been run.

Points to watch:
1) that the Makefiles.PL use Inline::MakeMaker (not ExtUtils::MakeMaker);
2) that the pm files contain the correct 'NAME' and 'VERSION' Config 
options;

3) that the version number is of the form of x.xx.

Can now move on to the actual issue that is the subject of this bug report.

Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyph...@optusnet.com.au via RT
Mon May 26 08:20:03 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: sisyph...@optusnet.com.au via RT

 Turns out that while the structure I was using successfully builds and
 installs, it doesn't actually install the compiled libraries  - so it's
 inadequate on that score. (This also should be fixed.)

My mistake. Nothing to be fixed wrt that structure - it works perfectly so 
long as you set it up correctly (ie as per modules/Math::Simple demo in the 
Inline source).
Attached Foo-4.tar.gz builds, tests, and installs fine - and there's no 
compilation to be done after 'make install' has been run.
Points to watch:
1) that the Makefiles.PL use Inline::MakeMaker (not ExtUtils::MakeMaker);
2) that the pm files contain the correct 'NAME' and 'VERSION' Config 
options;
3) that the version number is of the form of x.xx.

Can now move on to the actual issue that is the subject of this bug report.

Cheers,
Rob 




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread Jason McCarver via RT
Mon May 26 08:26:50 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Mon, 26 May 2014 06:03:10 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 Better still if we can fix things so that it simply works without any need 
 for additional config options.

I agree that it would be much better without the additional config
options.  I may try to look at that too, although I'm new to working
on MakeMaker so I'm not exactly sure how one would go about making this
work.  I'm more than happy to try to help if I'm not getting in the
way.

 In fact I'm hoping we can fix it without any need for additional
 documentation, too - but that remains to be seen. In the meantime we have
 your patches, to which I'll gladly resort if I don't come up with anything 
 better.

 Thanks for raising this, and for the patches !!

I also agree that not having to add any documentation would be ideal.

Thank you for being receptive!

 Although I prefer to avoid the layout you're wanting to use, it's certainly
 used by plenty of (ie most) source distros on CPAN.

So just out of curiosity (and this may not be the proper forum) why do
you prefer your layout?  I'm pretty new to module authoring so I'm
always open to inpu.

Jason



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread Jason McCarver via RT
Mon May 26 09:56:36 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


On Mon, 26 May 2014 08:20:04 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 URL: https://rt.cpan.org/Ticket/Display.html?id=95809 
 
 -Original Message- 
 From: sisyph...@optusnet.com.au via RT

 Attached Foo-4.tar.gz builds, tests, and installs fine - and there's no 
 compilation to be done after 'make install' has been run.

I don't see the Foo-4.tar.gz attachement?  Neither in my email or via
the web.


Jason



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT


I don't see the Foo-4.tar.gz attachement?  Neither in my email or via the 
web.


Don't worry - you're not going blind. (I'm just going mad ;-)

I've now attached it as Foo-fixed.tar.gz.
It's essentially the Foo distro that you sent, except that the layout has 
been changed to the one that I would normally use.
I've also had to alter the top level Makefile.PL and, of course, insert the 
2 extra Makefiles.PL.

I don't think I made any other changes.

It should build, test, and install successfully - and install as per your 
expectations.


Incidentally, it only takes for Foo.pm to use Foo::Bar; and use 
Foo::Bar::Baz; and the version *you* sent would also build and install as 
desired. (Though in that case, every time I run 'dmake', 'dmake test' and 
'dmake install' the C code recompiles - but it results in a correct install 
in the end.)
It's the fact that Foo.pm neither uses Inline, nor uses both of the other 
modules, that's providing the stumbling block. (Or does Foo.pm still need to 
load the other 2 modules even if it uses Inline ? ... not sure now; I'd need 
to check on that.)


The distro you sent is tantalisingly close to working  just can't quite 
nail it, and don't yet know whether that's because I'm not being smart 
enough or because it is simply un-nailable without using your patch (or 
something similar).


I'll look again tonight.

Cheers,
Rob 


Foo-fixed.tar.gz
Description: GNU Zip compressed data


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyph...@optusnet.com.au via RT
Mon May 26 20:17:10 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: Jason McCarver via RT

 I don't see the Foo-4.tar.gz attachement?  Neither in my email or via the 
 web.

Don't worry - you're not going blind. (I'm just going mad ;-)

I've now attached it as Foo-fixed.tar.gz.
It's essentially the Foo distro that you sent, except that the layout has 
been changed to the one that I would normally use.
I've also had to alter the top level Makefile.PL and, of course, insert the 
2 extra Makefiles.PL.
I don't think I made any other changes.

It should build, test, and install successfully - and install as per your 
expectations.

Incidentally, it only takes for Foo.pm to use Foo::Bar; and use 
Foo::Bar::Baz; and the version *you* sent would also build and install as 
desired. (Though in that case, every time I run 'dmake', 'dmake test' and 
'dmake install' the C code recompiles - but it results in a correct install 
in the end.)
It's the fact that Foo.pm neither uses Inline, nor uses both of the other 
modules, that's providing the stumbling block. (Or does Foo.pm still need to 
load the other 2 modules even if it uses Inline ? ... not sure now; I'd need 
to check on that.)

The distro you sent is tantalisingly close to working  just can't quite 
nail it, and don't yet know whether that's because I'm not being smart 
enough or because it is simply un-nailable without using your patch (or 
something similar).

I'll look again tonight.

Cheers,
Rob 



Foo-fixed.tar.gz
Description: GNU Zip compressed data


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyphus1
-Original Message- 
From: Jason McCarver via RT


So just out of curiosity (and this may not be the proper forum) why do you 
prefer your layout?


That's the layout I've always used, and it has never given me any trouble. 
(That's pretty much the full extent of my reasoning ;-)
I also think the additional Makefiles.PL can only provide additional 
flexibility, as we're seeing here.


According to my (admittedly unreliable) memory, the layout I use dates back 
a long way, whereas the layout you're using is relatively recent.
I don't know why the newer layout became popular - I'll have to find out. 
Perhaps then things might be a little clearer.


Cheers,
Rob 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-26 Thread sisyph...@optusnet.com.au via RT
Mon May 26 20:35:23 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


-Original Message- 
From: Jason McCarver via RT

 So just out of curiosity (and this may not be the proper forum) why do you 
 prefer your layout?

That's the layout I've always used, and it has never given me any trouble. 
(That's pretty much the full extent of my reasoning ;-)
I also think the additional Makefiles.PL can only provide additional 
flexibility, as we're seeing here.

According to my (admittedly unreliable) memory, the layout I use dates back 
a long way, whereas the layout you're using is relatively recent.
I don't know why the newer layout became popular - I'll have to find out. 
Perhaps then things might be a little clearer.

Cheers,
Rob 




Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-25 Thread Jason McCarver via RT
Sun May 25 15:49:48 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Rob,

I've attached Foo.tar.gz which has an example of how to use Inline::MakeMaker 
with the new patch.

I noticed that in your Foo.tar.gz that you originally built each module had its 
own Makefile.PL, like each was its own distribution.  For what I'm working on I 
have a single distribution containing multiple modules that use Inline.  I have 
changed the structure of my attached Foo distribution to mimic this.  There is 
just one top level Makefile.PL and still the Foo::Bar and Foo::Bar::Baz modules 
using Inline.

What I wanted (and I originally thought Inline::MakeMaker would do) is to 
compile all modules in the distribution that use Inline during the course of 
'perl Makefile.PL; make'.  Then when 'make install' was run that the compiled 
code would be installed along side the rest of the distribution.  From what I 
could tell this only works for a single module, the one named in the 
Makefile.PL.

My patch addresses this by generating rules to compile all modules in the 
'INLINE_MODULES' argument to Inline::MakeMaker.

Hopefully this makes sense and that my attachment will help clear up what I'm 
thinking.  Then again, maybe I'm completely off base here as this was my first 
encounter with Inline and I may be missing something obvious!

Thanks for your time (and patience),
Jason




Foo.tar.gz
Description: application/gzip


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-24 Thread sisyph...@optusnet.com.au via RT
Sat May 24 08:57:51 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


From: sisyph...@optusnet.com.au via RT

 To achieve a better understanding of the issue, I created a distro 
 (attached) that matches the description provided.

In the absence of any further feedback, I then altered the Foo distro so 
that:

Foo uses Inline
Foo loads Foo::Bar (which uses Inline)
Foo also loads Foo::Bar::Baz (which uses Inline)

This distro (attached as Foo-2.tar.gz) also builds and tests fine for me.

I then changed it slightly so that:

Foo uses Inline
Foo loads Foo::Bar (which uses Inline)
Foo::Bar uses Foo::Bar::Baz (which uses Inline)

This distro (attached as Foo-3.tar.gz) also builds and tests fine for me.

I don't doubt that the patches provided by the OP fix *something*. But I'm 
certainly not going to apply them until someone enlightens me as to exactly 
what it is that those patches fix.

Cheers,
Rob 



Foo-2.tar.gz
Description: GNU Zip compressed data


Foo-3.tar.gz
Description: GNU Zip compressed data


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-24 Thread sisyphus1

From: sisyph...@optusnet.com.au via RT

To achieve a better understanding of the issue, I created a distro 
(attached) that matches the description provided.


In the absence of any further feedback, I then altered the Foo distro so 
that:


Foo uses Inline
Foo loads Foo::Bar (which uses Inline)
Foo also loads Foo::Bar::Baz (which uses Inline)

This distro (attached as Foo-2.tar.gz) also builds and tests fine for me.

I then changed it slightly so that:

Foo uses Inline
Foo loads Foo::Bar (which uses Inline)
Foo::Bar uses Foo::Bar::Baz (which uses Inline)

This distro (attached as Foo-3.tar.gz) also builds and tests fine for me.

I don't doubt that the patches provided by the OP fix *something*. But I'm 
certainly not going to apply them until someone enlightens me as to exactly 
what it is that those patches fix.


Cheers,
Rob 


Foo-2.tar.gz
Description: GNU Zip compressed data


Foo-3.tar.gz
Description: GNU Zip compressed data


Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-24 Thread Jason McCarver via RT
Sat May 24 20:21:07 2014: Request 95809 was acted upon.
Transaction: Correspondence added by s...@parasite.cc
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: open
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Rob,

I must apologize ... I am working on a response but I just haven't had/made the 
time.  I hope to rectify that soon!

Thanks,
Jason

On Sat, 24 May 2014 08:57:52 -0400
sisyph...@optusnet.com.au via RT bug-inl...@rt.cpan.org wrote:

 URL: https://rt.cpan.org/Ticket/Display.html?id=95809 
 
 From: sisyph...@optusnet.com.au via RT
 
  To achieve a better understanding of the issue, I created a distro 
  (attached) that matches the description provided.
 
 In the absence of any further feedback, I then altered the Foo distro so 
 that:
 
 Foo uses Inline
 Foo loads Foo::Bar (which uses Inline)
 Foo also loads Foo::Bar::Baz (which uses Inline)
 
 This distro (attached as Foo-2.tar.gz) also builds and tests fine for me.
 
 I then changed it slightly so that:
 
 Foo uses Inline
 Foo loads Foo::Bar (which uses Inline)
 Foo::Bar uses Foo::Bar::Baz (which uses Inline)
 
 This distro (attached as Foo-3.tar.gz) also builds and tests fine for me.
 
 I don't doubt that the patches provided by the OP fix *something*. But I'm 
 certainly not going to apply them until someone enlightens me as to exactly 
 what it is that those patches fix.
 
 Cheers,
 Rob 
 



Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution with multiple modules

2014-05-21 Thread sisyph...@optusnet.com.au via RT
Wed May 21 07:40:52 2014: Request 95809 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
   Queue: Inline
 Subject: Re: [rt.cpan.org #95809] [PATCH] Using Inline in a distribution 
with multiple modules
   Broken in: (no value)
Severity: (no value)
   Owner: Nobody
  Requestors: s...@parasite.cc
  Status: new
 Ticket URL: https://rt.cpan.org/Ticket/Display.html?id=95809 


Original Message- 
From: Jason McCarver via RT

 I'm working on a distribution which has multiple modules using Inline. 
 Something like the following

 Foo
 Foo::Bar - uses Inline
Foo::Bar::Baz - uses Inline

 I couldn't figure out how to make Inline::MakeMaker work in this scenario, 
 so I've patched it to do what I think is correct.

Hi Jason,

To achieve a better understanding of the issue, I created a distro 
(attached) that matches the description provided.
That is, it's a distro named 'Foo' that contains a Foo.pm (pure perl), a 
Foo/Bar/Bar.pm (which uses Inline) and a Foo/Bar/Baz/Baz.pm (which uses 
Inline)  along with a MANIFEST, test scripts, and Makefiles.PL.

It builds and tests fine for me  what modifications need to be made to 
it in order that the Inline::MakeMaker problems alluded to above become 
evident ?

Cheers,
Rob 



Foo.tar.gz
Description: GNU Zip compressed data