klp2 / make Goto Github PK
View Code? Open in Web Editor NEWperl module for processing makefiles
perl module for processing makefiles
pmake
is the name of the FreeBSD make (although it is invoked there as just make
). On Debian the BSD make is invoked as pmake
which conflicts with the script that comes with this distribution. There should be an option when installing to not install the pure perl pmake or to install it under a different name. I would even argue that it might be better to use a completely different name.
Your distribution (KLPTWO/Make-1.1.4.tar.gz) contains files MYMETA.json/MYMETA.yml. These files must not be included into distribution - they are generated when installing.
See http://weblog.bulknews.net/post/44251476706/stop-shipping-mymeta-to-cpan
P.S. If this report is for an old version, please delete old indexed versions mentioned here: http://cpanold.chorny.net/?a=KLPTWO and contact me.
P.P.S. This report was generated automatically.
Original: https://rt.cpan.org/Ticket/Display.html?id=5716
Hi Nick,
On my windows machine i'm a user of your very useful
pmake. On otherplateform, with other make avartar, it
seems to me that when you put parameters on the command
line, these parameters are automatically defined
as environment variables. So the following minor
modification of the apply() method. That's satisfied my
own needs, but i ignore if this modification is really
right.Regards
Philippe
sub apply
{
my $self = shift;
my $method = shift;
$self->NextPass;
my @targets = ();
# print STDERR join(' ',Apply => $method,@_),"\n";
foreach (@_)
{
if (/^(\w+)=(.*)$/)
{
#print STDERR "OVERRIDE: $1 = $2\n";
$self->{Override}{$1} = $2;
# PHV
$ENV{$1} = $2;
# PHV
}
else
{
push(@targets,$_);
}
}
#
# This expansion is dubious as it alters the database
# as a function of current values of Override.
#
$self->ExpandTarget; # Process $(VAR) :
@targets = ($self->{'Targets'}[0])->Name unless (@targets);
# print STDERR join(' ',Targets => $method,map($_->Name,@targets)),"\n";
foreach (@targets)
{
my $t = $self->{Depend}{$_};
unless (defined $t)
{
print STDERR join(' ',$method,@_),"\n";
die "Cannot `$method' - no target $_"
}
$t->$method();
}
}
Would you like to transfer the repository over to me? I've already requested of the PAUSE Gods to be granted PAUSE permissions, I'd just prefer to keep the repo unitary rather than forking it.
I wrote about this in graphviz-perl/Graph#17 too. Basically, this has turned into a heavyweight module now.
Looking at the code quickly, it looks that there's only a limited use for Graph. Maybe it can be lazily loaded if it's available rather than requiring the module.
But, since the use here is very simple, maybe it should be internal to the module.
This is because exp_depend
naively splits on /\s+/
the results of subsvar
, which returns a single string. Directories with spaces in are in the EUMM-generated Makefile, which is what the test uses. Instead subsvar
needs to return a list, having done splitting itself, and both it and exp_depend
do a -e
on each item. If it does exist, don't split it. GNU make gets this right.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.