Bug 183305 - some perl5 modules with .xs components fail to install/package
Summary: some perl5 modules with .xs components fail to install/package
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-25 18:40 UTC by papowell
Modified: 2013-10-29 15:00 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description papowell 2013-10-25 18:40:00 UTC
This is very odd.

I installed a FreeBSD 8.4-Release.
Installed perl5:
root@test84:/install/INSTALL_FreeBSD_84 # perl -v

This is perl 5, version 14, subversion 4 (v5.14.4) built for amd64-freebsd

I then compiled and tried to install a laundry list of perl modules.

Some modules need to compile and install .so and .bs files.    Some,  but not all,
of these modules had the following error.  It appears that the .bs file is listed in the PLIST


XX ===>  Building package for p5-Bit-Vector-7.3
XX tar: lib/perl5/site_perl/5.14/mach/auto/Bit/Vector/Vector.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

But there is no Vector.bs file:

# find work -name '*.bs'        (no output - no file found)

I also did:

test84: {60} # cd work/Bit-Vector-7.3/
test84: {61} # make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl5.14.4 "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00_____version.t .. ok    
t/01_________new.t .. ok      
t/02_____destroy.t .. ok    
t/03__operations.t .. ok      
t/04___functions.t .. ok    
t/05______primes.t .. ok        
t/06______subset.t .. ok  
t/07_____compare.t .. ok    
t/08______resize.t .. ok    
t/09__parameters.t .. ok      
t/10___intervals.t .. ok        
t/11_______shift.t .. ok          
t/12______string.t .. ok      
t/13___increment.t .. ok        
t/14_______empty.t .. ok    
t/15_________add.t .. ok        
t/16____subtract.t .. ok        
t/17_________gcd.t .. ok      
t/28___chunklist.t .. ok      
t/30__overloaded.t .. ok          
t/40___auxiliary.t .. ok      
t/50_freeze_thaw.t .. ok          
t/51_file_nstore.t .. ok        
All tests successful.
Files=23, Tests=91963,  9 wallclock secs ( 7.84 usr  0.09 sys +  1.54 cusr  0.18 csys =  9.65 CPU)
Result: PASS

So it appears that the .bs file is not generated or required.

I patched the pkg-plist file:
test84: {64} # diff -bc pkg-plist*
*** pkg-plist   Fri Oct 25 10:23:07 2013
--- pkg-plist.orig      Fri Oct 25 10:22:50 2013
***************
*** 5,10 ****
--- 5,11 ----
  %%SITE_PERL%%/%%PERL_ARCH%%/Bit/Vector/String.pm
  %%SITE_PERL%%/%%PERL_ARCH%%/Bit/Vector/String.pod
  %%SITE_PERL%%/%%PERL_ARCH%%/auto/Bit/Vector/.packlist
+ %%SITE_PERL%%/%%PERL_ARCH%%/auto/Bit/Vector/Vector.bs
  %%SITE_PERL%%/%%PERL_ARCH%%/auto/Bit/Vector/Vector.so
  @dirrm %%SITE_PERL%%/%%PERL_ARCH%%/auto/Bit/Vector
  @dirrm %%SITE_PERL%%/%%PERL_ARCH%%/Bit/Vector

And did:
make all install package


test84: {71} # make all install package
===>  Installing for p5-Bit-Vector-7.3
===>   p5-Bit-Vector-7.3 depends on package: p5-Carp-Clan>=0 - found
===>   p5-Bit-Vector-7.3 depends on file: /usr/local/bin/perl5.14.4 - found
===>   Generating temporary packing list
===>  Checking if math/p5-Bit-Vector already installed
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib/perl5/site_perl/5.14/mach/auto/Bit/Vector/Vector.so
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector.pm
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector.pod
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector/Overload.pm
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector/String.pod
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector/Overload.pod
Installing /usr/local/lib/perl5/site_perl/5.14/mach/Bit/Vector/String.pm
Installing /usr/local/lib/perl5/5.14/man/man3/Bit::Vector.3
Installing /usr/local/lib/perl5/5.14/man/man3/Bit::Vector::Overload.3
Installing /usr/local/lib/perl5/5.14/man/man3/Bit::Vector::String.3
===>   Compressing manual pages for p5-Bit-Vector-7.3
===>   Registering installation for p5-Bit-Vector-7.3
===>  Building package for p5-Bit-Vector-7.3

I suspect that the pkg-plist entries for the indicated *.bs files are not needed.

--------------------------------------

XX ===>  Building package for p5-B-Utils-0.21
XX tar: lib/perl5/site_perl/5.14/mach/auto/B/Utils/Utils.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Bit-Vector-7.3
XX tar: lib/perl5/site_perl/5.14/mach/auto/Bit/Vector/Vector.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-HTML-Parser-3.71
XX tar: lib/perl5/site_perl/5.14/mach/auto/HTML/Parser/Parser.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Params-Util-1.07
XX tar: lib/perl5/site_perl/5.14/mach/auto/Params/Util/Util.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Socket-2.012
XX tar: lib/perl5/site_perl/5.14/mach/auto/Socket/Socket.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Storable-2.45
XX tar: lib/perl5/site_perl/5.14/mach/auto/Storable/Storable.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Text-Iconv-1.7
XX tar: lib/perl5/site_perl/5.14/mach/auto/Text/Iconv/Iconv.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-Tk-804.031_1
XX tar: lib/perl5/site_perl/5.14/mach/auto/Tk/Canvas/Canvas.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

XX ===>  Building package for p5-XML-LibXML-2.0106,1
XX tar: lib/perl5/site_perl/5.14/mach/auto/XML/LibXML/LibXML.bs: Cannot stat: No such file or directory
XX tar: Error exit delayed from previous errors.

Fix: 

I suspect that the pkg-plist contents contains a *.bs entry that is no longer needed.
How-To-Repeat: Install FBSD-84, latest version of perl,  and try to build the indicated pacakges.
Comment 1 azverev 2013-10-25 19:25:48 UTC
I think this can be related to latest ExtUtils::MakeMaker update.
In changelog (but it can be unrelated):

6.79_03 Fri Oct 11 13:56:53 BST 2013
    Bug fixes:
    * don't copy .bs portably :)

6.79_02 Fri Oct 11 12:58:01 BST 2013
    Bug fixes:
    * RT#28992 don't copy .bs files if they are empty


sunpoet@ can you look at this? Since old EU::MM allow empty and new one don=
't. And we have EU::MM in core and in ports.
Comment 2 dfilter service freebsd_committer freebsd_triage 2013-10-26 09:39:39 UTC
Author: sunpoet
Date: Sat Oct 26 08:39:31 2013
New Revision: 331660
URL: http://svnweb.freebsd.org/changeset/ports/331660

Log:
  - Allow ExtUtils::MakeMaker to install empty .bs file (traditional behavior)
  - Bump PORTREVISION for package change
  
  PR:		ports/183305
  Reported by:	Patrick Powell <papowell@astart.com>
  Patched by:	sunpoet (myself)
  Reviewed by:	az

Added:
  head/devel/p5-ExtUtils-MakeMaker/files/
  head/devel/p5-ExtUtils-MakeMaker/files/patch-lib-ExtUtils-MM_Unix.pm   (contents, props changed)
Modified:
  head/devel/p5-ExtUtils-MakeMaker/Makefile

Modified: head/devel/p5-ExtUtils-MakeMaker/Makefile
==============================================================================
--- head/devel/p5-ExtUtils-MakeMaker/Makefile	Sat Oct 26 08:33:13 2013	(r331659)
+++ head/devel/p5-ExtUtils-MakeMaker/Makefile	Sat Oct 26 08:39:31 2013	(r331660)
@@ -3,6 +3,7 @@
 
 PORTNAME=	ExtUtils-MakeMaker
 PORTVERSION=	6.80
+PORTREVISION=	1
 CATEGORIES=	devel perl5
 MASTER_SITES=	CPAN
 PKGNAMEPREFIX=	p5-
@@ -41,5 +42,6 @@ post-patch:
 	@${RM} -fr ${WRKSRC}/bundled/
 	@[ -e ${LOCALBASE}/lib/perl5/${PERL_VER}/mach/CORE/cc_runtime.h ] || \
 		${SED} -i '' -e '/cc_runtime.h/d' ${WRKSRC}/lib/ExtUtils/MM_Unix.pm
+	@${RM} ${WRKSRC}/lib/ExtUtils/MM_Unix.pm.orig
 
 .include <bsd.port.post.mk>

Added: head/devel/p5-ExtUtils-MakeMaker/files/patch-lib-ExtUtils-MM_Unix.pm
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/p5-ExtUtils-MakeMaker/files/patch-lib-ExtUtils-MM_Unix.pm	Sat Oct 26 08:39:31 2013	(r331660)
@@ -0,0 +1,16 @@
+ExtUtils::MakeMaker starting from 6.80 by default does not copy .bs files if they are empty.
+More information can be obtained from ports/183305
+
+--- lib/ExtUtils/MM_Unix.pm.orig	2013-10-15 23:04:44.000000000 +0800
++++ lib/ExtUtils/MM_Unix.pm	2013-10-26 04:30:48.748262789 +0800
+@@ -958,8 +958,8 @@
+ 
+     push @m, <<'MAKE';
+ 	$(CHMOD) $(PERM_RWX) $@
+-	$(NOECHO) $(RM_RF) $(BOOTSTRAP)
+-	- $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW)
++	$(NOECHO) $(RM_RF) $(INST_BOOT)
++	- $(TOUCH) $(BOOTSTRAP) && $(CP) $(BOOTSTRAP) $(INST_BOOT) && $(CHMOD) $(PERM_RW) $(INST_BOOT)
+ MAKE
+ 
+     return join('',@m);
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Po-Chuan Hsieh freebsd_committer freebsd_triage 2013-10-26 09:39:58 UTC
State Changed
From-To: open->closed

Problem solved in the ports tree.
Comment 4 papowell 2013-10-29 14:49:57 UTC
The problem is still there.   I think the source of the problem is not 
that zero length .bs files are not being copied but the .bs file is not 
being GENERATED.  Try net/p5-Socket6.  You will find that the .bs file 
is not generated at all during the build process.

Here is what I got for net/p5-Socket6:

COMPILE /usr/ports/net/p5-Socket6
===>  Building package for p5-Socket6-0.23
tar: lib/perl5/site_perl/5.14/mach/auto/Socket6/Socket6.bs: Cannot stat: 
No such file or directory
tar: Error exit delayed from previous errors.
pkg_create: make_dist: tar command failed with code 256
Creating package /usr/ports/net/p5-Socket6/work/p5-Socket6-0.23.tbz
Registering depends: perl-5.14.4.
Creating bzip'd tar ball in 
'/usr/ports/net/p5-Socket6/work/p5-Socket6-0.23.tbz'
*** Error code 1

Stop in /usr/ports/net/p5-Socket6.


Note: when I did portsnap and updated to version as of 2013-10-29 
07:12:00 PST and recompiled
devel/p5-ExtUtils-MakeMaker

cd /usr/ports/devel/p5-ExtUtils-MakeMaker
make clean all install package

The package file was created in 
p5-ExtUtils-MakeMaker/work/p5-ExtUtils-MakeMaker-6.80_1.tbz

Before, the package file was created in p5-ExtUtils-MakeMaker.   Is this 
the new 'staging' standard location for generated package files?