Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#44570 closed defect (fixed)

p5.20-io-tty:make: No rule to make target `/opt/local/lib/perl5/5.20/darwin-thread-multi-2level/CORE/fakethr.h'

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.99
Keywords: Cc: dbevans (David B. Evans)
Port: p5.20-io-tty

Description

In r122912 5.20 was added to perl5.branches but p5.20-io-tty does not build:

make: *** No rule to make target `/opt/local/lib/perl5/5.20/darwin-thread-multi-2level/CORE/fakethr.h', needed by `Tty.o'.  Stop.

Change History (9)

comment:1 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Summary: p5.20-io-tty:p5.20-io-tty:make: No rule to make target `/opt/local/lib/perl5/5.20/darwin-thread-multi-2level/CORE/fakethr.h'

comment:2 Changed 10 years ago by dbevans (David B. Evans)

This seems not to be specific to p5.20-io-tty but to perl5.20 itself (which should provide this file) and was thought to be fixed in #44420 (see comment 3).

comment:3 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

It's specific to the minority of p5 modules that use fakethr.h. I did see those other tickets, but they merely claim that rebuilding perl5.20 will fix the problem, which it does not for me, on two different systems.

comment:4 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

I have double checked, and confirmed that the perl5.18 source code contains the file fakethr.h and the perl5.20 source code does not.

comment:5 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Oh, but interesting: on the other system, p5.20-io-tty builds, despite fakethr.h being missing. Must see how it's doing that...

comment:6 Changed 10 years ago by dbevans (David B. Evans)

I don't know what I was smoking the other day. I would have sworn I had a copy of perl 5.20 built with fakethr.h in it but when I try now using either the current binary archive or rebuilding locally it certainly does not and it is not in the source as you say.

To support this and perhaps give a clue at what the issue is, I ran across the following at http://codeverge.com/perl.perl5.porters/nwclark-tpf-grant-may-report-2/210460:

Whilst on the subject of extermination, this month I finally removed
fakethr.h, and eliminated all references to it and FAKE_THREADS. fakethr.h
and FAKE_THREADS were for a "green" threads implementation of 5005threads.
5005threads itself is long gone, and it's not clear that -DFAKE_THREADS
*ever* built correctly. Certainly it did not work for the 5.005 release, and
it did not work at the time of the commits for the initial checkin. The
closest that it seems to have been to working is around commit
c6ee37c52f2ca9e5 (Dec 1997), where the headers no longer contained errors,
but perl.c failed to compile.

I had spotted this dead code a couple of years ago, but stalled on the
problem that ExtUtils::MakeMaker contained a hard-coded list of headers
which it uses to generate dependency rules for XS code, and fakethr.h was
one of them. Hence simply innocently removing the file will have the less
than desirable effect of causing all XS code to fail. (It's very easy to
break most of CPAN. It's a lot harder to *not* break CPAN)

Manually removing another line felt like a bodge, as it doesn't actually fix
the real problem, so with plenty of other things to make progress on, I took
no action. Fortunately as part of his hash work, Yves fixed the header list
in ExtUtils::Makemaker properly (in a way that had eluded me), such that
there is no longer list to maintain (and get stale). Hence, with that
pre-requisite unblocked, I carefully purged the code once v5.18.0 shipped.
So that's the last part of 5.005 threads removed. That is, until the next
part is found.

So this claims removal of this header and related code after the 5.18.0 release. So the issue may be XS and which version of ExtUtils::MakeMaker is in use? Something further to look at.

comment:7 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

Yup, that's it. On the system that was working, p5.20-extutils-makemaker was not installed. (perl5.20 includes its own copy of 6.98.) On the system that was not working, p5.20-extutils-makemaker 6.64 was installed. Updated p5-extutils-makemaker to 6.98 in r123330. Now p5.20-io-tty builds on both systems.

comment:8 Changed 10 years ago by dbevans (David B. Evans)

I see the same results on my system:

  • p5.20-tty-io without p5.20-extutils-makemaker active (success)
  • p5.20-tty-io with p5.20-extutils-makemaker 6.64 active (failure)
  • p5.20-tty-io with p5.20-extutils-makemaker 6.98 active (success)

This also explains why it built successfully on the buildbots (except SL which is another issue).

Thanks for the fix.

Last edited 10 years ago by dbevans (David B. Evans) (previous) (diff)

comment:9 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Yup, the Snow Leopard issue is https://github.com/toddr/IO-Tty/pull/3

Note: See TracTickets for help on using tickets.