Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Perl: porters

Building perl on Win32 with dmake-4.11

 

 

Perl porters RSS feed   Index | Next | Previous | View Threaded


SteveHay at planit

Nov 27, 2007, 2:05 AM

Post #1 of 5 (116 views)
Permalink
Building perl on Win32 with dmake-4.11

Yesterday I released a build of the latest version of dmake (4.11) to
CPAN, and it seems that it generates numerous warnings when building
perl which previous versions didn't:

dmake: Warning: -- Target [config.h] was made but the time stamp has
not been updated.
dmake: Warning: -- Target [..\perly.c] was made but the time stamp has
not been updated.
dmake: Warning: -- Found file corresponding to virtual target
[defsubs.h].
dmake: Warning: -- Found file corresponding to virtual target
[PPPort.pm].
dmake: Warning: -- Found file corresponding to virtual target
[ppport.h].
dmake: Warning: -- Found file corresponding to virtual target
[RealPPPort.xs].
dmake: Warning: -- Found file corresponding to virtual target
[Errno.pm].

plus warnings like these for each extension that gets built:

dmake: Warning: -- Found file corresponding to virtual target
[..\..\lib\.exists].
dmake: Warning: -- Found file corresponding to virtual target
[..\..\lib\auto\Win32CORE\.exists].
dmake: Warning: -- Found file corresponding to virtual target
[blib\bin\.exists].
dmake: Warning: -- Found file corresponding to virtual target
[blib\script\.exists].
dmake: Warning: -- Found file corresponding to virtual target
[blib\man1\.exists].
dmake: Warning: -- Found file corresponding to virtual target
[blib\man3\.exists].

Are these warnings things that we should be worrying about, or is dmake
going over the top with all these warnings and should perhaps relegate
them to verbose mode only?


rgarciasuarez at gmail

Nov 27, 2007, 2:18 AM

Post #2 of 5 (111 views)
Permalink
Re: Building perl on Win32 with dmake-4.11 [In reply to]

On 27/11/2007, Steve Hay <SteveHay [at] planit> wrote:
> Yesterday I released a build of the latest version of dmake (4.11) to
> CPAN, and it seems that it generates numerous warnings when building
> perl which previous versions didn't:
>
> dmake: Warning: -- Target [config.h] was made but the time stamp has
> not been updated.
> dmake: Warning: -- Target [..\perly.c] was made but the time stamp has
> not been updated.
> dmake: Warning: -- Found file corresponding to virtual target
> [defsubs.h].
> dmake: Warning: -- Found file corresponding to virtual target
> [PPPort.pm].
> dmake: Warning: -- Found file corresponding to virtual target
> [ppport.h].
> dmake: Warning: -- Found file corresponding to virtual target
> [RealPPPort.xs].

Sounds noisy -- IIRC those are all generated files, not part of the
common make process.

> dmake: Warning: -- Found file corresponding to virtual target
> [Errno.pm].

> plus warnings like these for each extension that gets built:
>
> dmake: Warning: -- Found file corresponding to virtual target
> [..\..\lib\.exists].
> dmake: Warning: -- Found file corresponding to virtual target
> [..\..\lib\auto\Win32CORE\.exists].
> dmake: Warning: -- Found file corresponding to virtual target
> [blib\bin\.exists].
> dmake: Warning: -- Found file corresponding to virtual target
> [blib\script\.exists].
> dmake: Warning: -- Found file corresponding to virtual target
> [blib\man1\.exists].
> dmake: Warning: -- Found file corresponding to virtual target
> [blib\man3\.exists].
>
> Are these warnings things that we should be worrying about, or is dmake
> going over the top with all these warnings and should perhaps relegate
> them to verbose mode only?

I don't understand what those warnings mean.


SteveHay at planit

Nov 27, 2007, 3:28 AM

Post #3 of 5 (106 views)
Permalink
RE: Building perl on Win32 with dmake-4.11 [In reply to]

Rafael Garcia-Suarez wrote:
> On 27/11/2007, Steve Hay <SteveHay [at] planit> wrote:
>> Yesterday I released a build of the latest version of dmake (4.11) to
>> CPAN, and it seems that it generates numerous warnings when building
>> perl which previous versions didn't:
>>
>> dmake: Warning: -- Target [config.h] was made but the time stamp
>> has not been updated. dmake: Warning: -- Target [..\perly.c] was
>> made but the time stamp has not been updated. dmake: Warning: --
>> Found file corresponding to virtual target [defsubs.h]. dmake:
>> Warning: -- Found file corresponding to virtual target [PPPort.pm].
>> dmake: Warning: -- Found file corresponding to virtual target
>> [ppport.h]. dmake: Warning: -- Found file corresponding to virtual
>> target [RealPPPort.xs].
>
> Sounds noisy -- IIRC those are all generated files, not part of the
> common make process.
>
>> dmake: Warning: -- Found file corresponding to virtual target
>> [Errno.pm].
>
>> plus warnings like these for each extension that gets built:
>>
>> dmake: Warning: -- Found file corresponding to virtual target
>> [..\..\lib\.exists]. dmake: Warning: -- Found file corresponding to
>> virtual target [..\..\lib\auto\Win32CORE\.exists].
>> dmake: Warning: -- Found file corresponding to virtual target
>> [blib\bin\.exists]. dmake: Warning: -- Found file corresponding to
>> virtual target [blib\script\.exists]. dmake: Warning: -- Found file
>> corresponding to virtual target [blib\man1\.exists]. dmake:
>> Warning: -- Found file corresponding to virtual target
>> [blib\man3\.exists].
>>
>> Are these warnings things that we should be worrying about, or is
>> dmake going over the top with all these warnings and should perhaps
>> relegate them to verbose mode only?
>
> I don't understand what those warnings mean.

Me neither. Here's what the dmake manual says on virtual targets:

Dmake allows to define targets with the sole purpose to enforce
a
dependency chain that are unable to create the target, hence
virtual
targets. When dmake tries to make a target, but only finds a
target
definition without recipe lines, it would normally issues a "Don't
know
how to make ..." error message, but if a target rule is terminated by
a
semicolon and has no following recipe lines, or if it has no
recipe
lines, but defines prerequisites, or if the AUGMAKE mode is
enabled
(see the COMPATIBILITY section for details), the target is treated as
a
virtual target and the error is suppressed. In addition to this, if
the
default target does not have recipe lines it is also treated as a
vir-
tual target.

Virtual targets should not have a corresponding file therefore
they
inherit the time of their newest prerequisite if they have
prerequi-
sites, otherwise they get the current time assigned when being
made.
If the virtual target has a corresponding file a warning is issued,
but
the time stamp of that file is taken into account. The virtual
target
uses the time stamp of the corresponding file if it is newer than
the
one determined by the previous rule.

Do these '.exists' file exist when building on other OSes?

I must admit that I'm somewhat confused as to why dmake thinks, e.g.,
..\..\lib\.exists is a virtual target. The only references to this in
the Makefile are as follows (where INST_LIBDIR=..\..\lib and DFSEP=\):

blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists
$(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists
$(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists
$(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists

$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_LIBDIR)
$(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists

The target rule "$(INST_LIBDIR)$(DFSEP).exists" is not terminated by a
semicolon, it does have following recipe lines, and (as far as I can
tell) AUGMAKE mode is not enabled so is dmake mistaken to treat it as a
virtual target in the first place?

I may have to go back to the dmake maintainers on this one...


SteveHay at planit

Nov 27, 2007, 3:49 AM

Post #4 of 5 (106 views)
Permalink
RE: Building perl on Win32 with dmake-4.11 [In reply to]

Steve Hay wrote:
> Rafael Garcia-Suarez wrote:
>> On 27/11/2007, Steve Hay <SteveHay [at] planit> wrote:
>>> Yesterday I released a build of the latest version of dmake (4.11)
>>> to CPAN, and it seems that it generates numerous warnings when
>>> building perl which previous versions didn't:
>>>
>>> dmake: Warning: -- Target [config.h] was made but the time stamp
>>> has not been updated. dmake: Warning: -- Target [..\perly.c] was
>>> made but the time stamp has not been updated. dmake: Warning: --
>>> Found file corresponding to virtual target [defsubs.h]. dmake:
>>> Warning: -- Found file corresponding to virtual target [PPPort.pm].
>>> dmake: Warning: -- Found file corresponding to virtual target
>>> [ppport.h]. dmake: Warning: -- Found file corresponding to virtual
>>> target [RealPPPort.xs].
>>
>> Sounds noisy -- IIRC those are all generated files, not part of the
>> common make process.
>>
>>> dmake: Warning: -- Found file corresponding to virtual target
>>> [Errno.pm].
>>
>>> plus warnings like these for each extension that gets built:
>>>
>>> dmake: Warning: -- Found file corresponding to virtual target
>>> [..\..\lib\.exists]. dmake: Warning: -- Found file corresponding to
>>> virtual target [..\..\lib\auto\Win32CORE\.exists].
>>> dmake: Warning: -- Found file corresponding to virtual target
>>> [blib\bin\.exists]. dmake: Warning: -- Found file corresponding to
>>> virtual target [blib\script\.exists]. dmake: Warning: -- Found file
>>> corresponding to virtual target [blib\man1\.exists]. dmake:
>>> Warning: -- Found file corresponding to virtual target
>>> [blib\man3\.exists].
>>>
>>> Are these warnings things that we should be worrying about, or is
>>> dmake going over the top with all these warnings and should perhaps
>>> relegate them to verbose mode only?
>>
>> I don't understand what those warnings mean.
>
> Me neither. Here's what the dmake manual says on virtual targets:
>
> Dmake allows to define targets with the sole purpose to
> enforce a
> dependency chain that are unable to create the target, hence
> virtual
> targets. When dmake tries to make a target, but only finds a
> target
> definition without recipe lines, it would normally issues a "Don't
> know
> how to make ..." error message, but if a target rule is terminated
> by a
> semicolon and has no following recipe lines, or if it has no
> recipe
> lines, but defines prerequisites, or if the AUGMAKE mode is
> enabled
> (see the COMPATIBILITY section for details), the target is treated
> as a
> virtual target and the error is suppressed. In addition to this, if
> the
> default target does not have recipe lines it is also treated as a
> vir-
> tual target.
>
> Virtual targets should not have a corresponding file therefore
> they
> inherit the time of their newest prerequisite if they have
> prerequi-
> sites, otherwise they get the current time assigned when being
> made.
> If the virtual target has a corresponding file a warning is issued,
> but
> the time stamp of that file is taken into account. The virtual
> target
> uses the time stamp of the corresponding file if it is newer than
> the
> one determined by the previous rule.
>
> Do these '.exists' file exist when building on other OSes?
>
> I must admit that I'm somewhat confused as to why dmake thinks, e.g.,
> ..\..\lib\.exists is a virtual target. The only references to this in
> the Makefile are as follows (where INST_LIBDIR=..\..\lib and DFSEP=\):
>
> blibdirs : $(INST_LIBDIR)$(DFSEP).exists
> $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists
> $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists
> $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists
> $(INST_MAN3DIR)$(DFSEP).exists
>
> $(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
> $(NOECHO) $(MKPATH) $(INST_LIBDIR)
> $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
> $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
>
> The target rule "$(INST_LIBDIR)$(DFSEP).exists" is not terminated by a
> semicolon, it does have following recipe lines, and (as far as I can
> tell) AUGMAKE mode is not enabled so is dmake mistaken to treat it as
> a virtual target in the first place?
>
> I may have to go back to the dmake maintainers on this one...

Well, it's easily reproducible. This makefile:

all : exists
@echo Done

exists ::
@echo here>exists

emits a warning, while this one doesn't:

all : exists
@echo Done

exists :
@echo here>exists

(they both still create the file 'exists').

Does that look like a bug in dmake? My understanding of what '::' is
supposed to do certainly doesn't explain this behaviour.


SteveHay at planit

Nov 27, 2007, 5:07 AM

Post #5 of 5 (107 views)
Permalink
RE: Building perl on Win32 with dmake-4.11 [In reply to]

Steve Hay wrote:
> Steve Hay wrote:
>> Rafael Garcia-Suarez wrote:
>>> On 27/11/2007, Steve Hay <SteveHay [at] planit> wrote:
>>>> Yesterday I released a build of the latest version of dmake (4.11)
>>>> to CPAN, and it seems that it generates numerous warnings when
>>>> building perl which previous versions didn't:
>>>>
>>>> dmake: Warning: -- Target [config.h] was made but the time stamp
>>>> has not been updated. dmake: Warning: -- Target [..\perly.c] was
>>>> made but the time stamp has not been updated. dmake: Warning: --
>>>> Found file corresponding to virtual target [defsubs.h]. dmake:
>>>> Warning: -- Found file corresponding to virtual target [PPPort.pm].
>>>> dmake: Warning: -- Found file corresponding to virtual target
>>>> [ppport.h]. dmake: Warning: -- Found file corresponding to virtual
>>>> target [RealPPPort.xs].
>>>
>>> Sounds noisy -- IIRC those are all generated files, not part of the
>>> common make process.
>>>
>>>> dmake: Warning: -- Found file corresponding to virtual target
>>>> [Errno.pm].
>>>
>>>> plus warnings like these for each extension that gets built:
>>>>
>>>> dmake: Warning: -- Found file corresponding to virtual target
>>>> [..\..\lib\.exists]. dmake: Warning: -- Found file corresponding
>>>> to virtual target [..\..\lib\auto\Win32CORE\.exists].
>>>> dmake: Warning: -- Found file corresponding to virtual target
>>>> [blib\bin\.exists]. dmake: Warning: -- Found file corresponding to
>>>> virtual target [blib\script\.exists]. dmake: Warning: -- Found
>>>> file corresponding to virtual target [blib\man1\.exists]. dmake:
>>>> Warning: -- Found file corresponding to virtual target
>>>> [blib\man3\.exists].
>>>>
>>>> Are these warnings things that we should be worrying about, or is
>>>> dmake going over the top with all these warnings and should perhaps
>>>> relegate them to verbose mode only?
>>>
>>> I don't understand what those warnings mean.
>>
>> Me neither. Here's what the dmake manual says on virtual targets:
>>
>> Dmake allows to define targets with the sole purpose to
>> enforce a dependency chain that are unable to create the target,
>> hence virtual targets. When dmake tries to make a target, but
>> only finds a target definition without recipe lines, it would
>> normally issues a "Don't know how to make ..." error message, but
>> if a target rule is terminated by a semicolon and has no following
>> recipe lines, or if it has no recipe lines, but defines
>> prerequisites, or if the AUGMAKE mode is enabled (see the
>> COMPATIBILITY section for details), the target is treated as a
>> virtual target and the error is suppressed. In addition to this,
>> if the default target does not have recipe lines it is also
>> treated as a vir- tual target.
>>
>> Virtual targets should not have a corresponding file therefore
>> they inherit the time of their newest prerequisite if they have
>> prerequi- sites, otherwise they get the current time assigned
>> when being made. If the virtual target has a corresponding file a
>> warning is issued, but the time stamp of that file is taken into
>> account. The virtual target uses the time stamp of the
>> corresponding file if it is newer than the one determined by the
>> previous rule.
>>
>> Do these '.exists' file exist when building on other OSes?
>>
>> I must admit that I'm somewhat confused as to why dmake thinks, e.g.,
>> ..\..\lib\.exists is a virtual target. The only references to this in
>> the Makefile are as follows (where INST_LIBDIR=..\..\lib and
>> DFSEP=\):
>>
>> blibdirs : $(INST_LIBDIR)$(DFSEP).exists
>> $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists
>> $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists
>> $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists
>> $(INST_MAN3DIR)$(DFSEP).exists
>>
>> $(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
>> $(NOECHO) $(MKPATH) $(INST_LIBDIR)
>> $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
>> $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
>>
>> The target rule "$(INST_LIBDIR)$(DFSEP).exists" is not terminated by
>> a semicolon, it does have following recipe lines, and (as far as I
>> can tell) AUGMAKE mode is not enabled so is dmake mistaken to treat
>> it as a virtual target in the first place?
>>
>> I may have to go back to the dmake maintainers on this one...
>
> Well, it's easily reproducible. This makefile:
>
> all : exists
> @echo Done
>
> exists ::
> @echo here>exists
>
> emits a warning, while this one doesn't:
>
> all : exists
> @echo Done
>
> exists :
> @echo here>exists
>
> (they both still create the file 'exists').
>
> Does that look like a bug in dmake? My understanding of what '::' is
> supposed to do certainly doesn't explain this behaviour.

I think it must have been a bug that has since been fixed in the current
CVS branch, because rebuilding from scratch with 4.12-cvs I now only get
two warnings from dmake:

dmake: Warning: -- Target [config.h] was made but the time stamp has
not been updated.
dmake: Warning: -- Target [..\perly.c] was made but the time stamp has
not been updated.

The first is presumably because config.h is "created" by getting copied
from one of the canned config files (e.g. win32/config_H.vc). Perhaps
config.h should be "touched" after the copy?

Not sure what's going on with perly.c. I thought that was part of the
distro, neither generated nor copied.

(For anyone interested, the dmake issue fixing the bogus warnings is
probably http://www.openoffice.org/issues/show_bug.cgi?id=64572)

Perl porters RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.