Problem with File::Tem (p5-ExtUtils-CBuilder/gcc and some others)

olli hauer ohauer at gmx.de
Tue Mar 1 09:43:58 UTC 2011


On 2011-02-28 16:21, freebsd at tern.ru wrote:
> 
> Hello Perl Team.
> 
> I   faced   a   bug   ("feature")  in  File::Temp that prevents use of
> p5-ExtUtils-CBuilder-0.2802_1,1  and, as a result, build and install of
> such   packages   like   p5-Params-Validate-0.95_3,  p5-DateTime-0.66,
> p5-XML-Parser-2.40, p5-IPC-ShareLite-0.17
> 
> When I tried building the above packages I received different kinds of
> errors stating that I do not have CBuilder and/or gcc and can't create
> temp file.
> 
> After   a  lot of investigation I finally found that the problem is in
> NFS that hosts my ports tree.
> 
> As I've understood, test code tries to create temporary file for  test
> compile.    temp file is created with routine in File::Temp that tries
> to  set  some FS flags/locks  that  do  not work on NFS. Although zero
> sized  temp  files  are  created   successfully   (but   without   the
> required   flags)  the  routine  fails and as a result compile of test
> file  also  fails.  Build stops and empty temp file is left after each
> build attempt. 
> 
> I have
> FreeBSD 7.4-PRERELEASE #2: Tue Feb  1 17:50:19 MSK 2011 i386
> perl 5.8.9_4
> p5-ExtUtils-CBuilder-0.2802_1,1
> 
> FreeBSD   Ports   site   states  that  p5-ExtUtils-CBuilder-0.2802_1,1
> requires perl-5.10.1_3l but actual port build does not state this and
> tries to use perl 5.8.9 that I have.
> 
> If the above behavior is expectable it  would  be  great to have some
> corresponding  info published, as I spent vast of time looking for the
> problem of gcc/CBuilder in Internet but found nothing relevant.
> 
> PS.  Work  around - to copy the problem port directory localy (e.g. to
> /tmp)


I suggest the following entry in your /etc/make.conf, since this
workaround is not practicable if the ports tree is shared read only.

WRKDIRPREFIX?= /space/portbuild

This way you have some benefits.
 - you can mount the portstree read only
 - defined space for building and cleanup (not in the directory of the port)
 - quick cleanup with rm -rf /space/portbuild
 - you can mount a ramdisk or tmpfs to the directory
   ( mount -t tmpfs tmpfs /space/portbuild)
 ...



More information about the freebsd-perl mailing list