[Scons-users] Intermittent Install() failure

William Blevins wblevins001 at gmail.com
Fri Jul 15 12:14:24 EDT 2016


Steve,

I'm not aware of any specific issue with install, but there are some
possible issues that I am aware:

   1. If you have custom scanners, make sure they implement from
   SCons.Scanner.Current and not SCons.Scanner.Base; otherwise, you might have
   concurrent file access between implicit scanning operations and other
   processes.
   2. There was a big subprocess bug in python 2.6 that carried through
   several other major versions: https://bugs.python.org/issue1731717. I
   would check to see that your version of 2.6 contains the patch for this
   issue.

V/R,

William

On Fri, Jul 15, 2016 at 9:30 AM, Hill, Steve (FP COM) <Steve.Hill at cobham.com
> wrote:

> I’m having a problem where, with parallel builds (most people use 8, 12 or
> 16 threads), we occasionally get failures like the following:
>
>
>
> F:\<directory path>\hw_cfgs\1Server_1TM_6C66_2U.cfg: The process cannot access the file because it is being used by another process
> scons: building terminated because of errors.
>
>
>
> We are running Python 2.6.5 (with pywin32) and SCons 2.3.6. This file is
> being copied due to a Install() call. Note that, for various historical
> reasons, we have the following decider for these Installs:
>
>
>
> def _copy_decider(dependency, target, prev_ni):
>
>     target = str(target.abspath)
>
>     dependency = str(dependency.abspath)
>
>     if os.path.isfile(target) and os.path.isfile(dependency):
>
> *        # By default, filecmp.cmp assumes that files with identical
> os.stat signatures*
>
> *        # (which includes the inode) are the same file and, hence, must
> be the same.*
>
> *        # However, on Windows, there is no inode - it appears to be set
> to zero - so*
>
> *        # any two files with the same size and
> access/creation/modification times*
>
> *        # will have the same os.stat signature, leading to a false
> positive. For this*
>
> *        # reason, we must force it to do an actual file comparison by
> setting shallow*
>
> *        # to False*
>
>         return not filecmp.cmp(target, dependency, shallow = False)
>
>     else:
>
> *        # Either one of the dependency or target isn't a file or one of
> the files*
>
> *        # (presumably the target) isn't there so do the copy*
>
>         return True
>
>
>
> Note also that our IT department claims that virus checkers are disabled
> within the directory where the build is being performed (and we certainly
> have not seen any indication in the virus checker console to suggest that
> to be incorrect).
>
>
>
> Does anyone have any thoughts as to what the problem might be?
>
>
>
> Thanks in advance,
>
>
>
> S.
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20160715/ade3a7ab/attachment-0001.html>


More information about the Scons-users mailing list