Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#78 staden-2.0.0b7-src: parallel make fails

closed-fixed
None
5
2010-09-01
2010-08-02
Martin Mokrejs
No

If I compile from sources using 4 CPUs on linux using GNU make I get to link some stuff while the staden-2.0.0b7-src/lib/libprimer3.so was not there yet. I do not have the problem when running only one 1 CPU. Would you make the Makefiles more resistent to parallel issues? Thanks.

Discussion

  • James Bonfield
    James Bonfield
    2010-08-02

    I've noticed this myself and it's something I was planning to look into. I'm not sure how easy it is to resolve, but I'll experiment with the top-level Makefile. I think perhaps if I specify the depdencies of directories on each other then this may cure it.

     
  • James Bonfield
    James Bonfield
    2010-08-02

    • assigned_to: nobody --> jkbonfield
    • status: open --> open-accepted
     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    build.log

     
    Attachments
  • James Bonfield
    James Bonfield
    2010-08-02

    Ah it looks like I've already been here in an attempt to fix this, but didn't update it when I added primer3 support into Gap5. What was it attempting to link when the parallel make broke?

    I think the solution is to edit Makefile.in and add "primer3/src" to the gap5 dependency line near the end of the file.
    (Annoyingly I can't get it to fail here to verify the fix, but it's perhaps a bit random depending on which make version you're using and the speed of each sub-process.)

     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    Seems to be fixed with http://staden.svn.sourceforge.net/viewvc/staden/staden/trunk/src/Makefile.in:

    <quote>
    Revision 2191 - (view) (download) (annotate) - [select for diffs]
    Modified Mon Aug 2 10:29:24 2010 UTC (76 minutes, 54 seconds ago) by jkbonfield
    File length: 5080 byte(s)
    Diff to previous 1968

    Added primer3/src as dependency to gap5, given the recent addition to
    using this library. Hopefully this fixed some parallel make failures.
    </quote>

     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    • status: open-accepted --> open-fixed
     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    another_build.log

     
    Attachments
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    No, it is not fixed yet. :(

     
  • James Bonfield
    James Bonfield
    2010-08-02

    Could you please give me the appropriate make output lines where it fails? Specifically enough to see which dependency is missing.

    Thanks,

    James

     
  • James Bonfield
    James Bonfield
    2010-08-02

    • status: open-fixed --> open-accepted
     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    See the another_build.log file.

     
  • James Bonfield
    James Bonfield
    2010-08-02

    Oops, sorry I didn't notice the attached files.

    I believe the problem is to do with the output file, ie the gcc ... -o lib/libprimer3.so fails when the lib directory itself doesn't yet exist. Adding "$(L)/.dir" to the end of the "$(L)/$(SHLIB_PREFIX)$(LIBS)$(SHLIB_SUFFIX):" target in src/primer3/src/Makefile should solve this. I see that it's done by some of the earlier subdirs (eg Misc), but not by all meaning that parallel makes could fail. I'm checking this into svn along with several other Makefiles with similar issues.

    Can you please test again? For me make -j4 works anyway, but I can manually reproduce the problem by removing lib and doing a "make primer3/src" directly to force this to be built before any other element is built.

     
  • Martin Mokrejs
    Martin Mokrejs
    2010-08-02

    Please send me the patches by email, I will have problems to browse the web interactively next 6 days. mmokrejs G i r e s i t e .org should work. Thanks.

     
  • James Bonfield
    James Bonfield
    2010-09-01

    I believe this to be fixed now.

     
  • James Bonfield
    James Bonfield
    2010-09-01

    • status: open-accepted --> closed-fixed