gnucobol-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [open-cobol-list] parallel compilation


From: Simon Sobisch
Subject: Re: [open-cobol-list] parallel compilation
Date: Mon, 19 Sep 2016 20:45:22 +0200

This is really strange. cobc uses
cob_temp_name(), see cobc.c around line 2901

This is defined in common.c around line 3281 and uses:

    cob_gettmpdir(), SLASH_CHAR, cob_sys_getpid(), cob_temp_iteration, ext
 
You can override the temporary direcory which you did (first part), but this 
shouldn't be necessary as the second part is the process-id which shouldn't be 
reused within a time frame needed for compilation.

This is quite strange and should be investigated further!

BTW: if you want to do parallel builds I suggest not to do this manually but 
use a small makefile with wildcard, this allows you to do

    make -j16 all # generate all sources that are older than the binaries with 
16 parallel jobs (depending on the number of logical cores your cpu has and if 
you or other people want to do other stuff on the server in the meanwhile)

BTW#2: if you do a mass and parallel compilation I'd suggest to have TMPDIR 
(not globally but for cobc, for example in the makefile) set to a tmpfs or 
ramfs mount, this can speed up the compilation measurably

Simon

> Problem solved with $TMPDIR,
> Thanks.
> 
> Erwan
> 
> 2016-09-19 10:05 GMT+02:00 Boepple, Florian <address@hidden>:
> Hi Erwan,
>
> you can set the environment variable $TMPDIR.
> If this is not set GnuCOBOL will look in $TMP and also $TEMP for a value.
> If none of these are set "/tmp" will be used.
>
> See function cob_gettmpdir() in libcob/common.c
>
> Best regards
> Florian
>
>
>
> Von: Erwan Duroselle [mailto:address@hidden
> Gesendet: Montag, 19. September 2016 09:16
> An: address@hidden
> Betreff: [open-cobol-list] parallel compilation
>
> Hi,
>
> I'm a rather new to gnuCobol, so please forgive any obvious question.
>
> I am trying to compile a rather large software (many thousands of
> programs), issued from AS400 and Microfocus, with gnuCobol 2.0 rc1, on a
> Centos VM.
>
> Most of my programs compile wonderfully, though I may ask questions about
> the few remaining ones later.
>
> My problem is when I try to compile several programs in parallel, to save
> compilation time.
> Say A* programs runs in a shell, and B* in an other one, at the same time.
> On about 5% of the programs, apparently randomly, I get errors like:
>
> /tmp/cob6501_0.c:24:30: error: /tmp/cob6501_0.c.h : No such file or
> directory
> /tmp/cob6501_0.c:47:34: error: /tmp/cob6501_0.c.l.h : No such file or
> directory
> /tmp/cob6501_0.c: In function ?BTRX030C_?:
> /tmp/cob6501_0.c:59: error: ?module? undeclared (first use in this
> function)
> /tmp/cob6501_0.c:59: error: (Each undeclared identifier is reported only
> once
> /tmp/cob6501_0.c:59: error: for each function it appears in.)
> /tmp/cob6501_0.c:59: error: ?cob_glob_ptr? undeclared (first use in this
> function)
> /tmp/cob6501_0.c:62: error: ?cob_procedure_params? undeclared (first use
> in this function)
> /tmp/cob6501_0.c:65: error: ?frame_ptr? undeclared (first use in this
> function)
> /tmp/cob6501_0.c:65: error: ?frame_stack? undeclared (first use in this
> function)
>
> When compiled alone, those programs compile without any message.
> When parallel compilation is launched again, simillar errors will happen
> on other programs, not on the same ones.
> The same problem happens on an older 2.0 version from 2015, on an other
> RedHat box.
>
> Does anyone have a clue on how to avoid these errors?
> I have tried to set up a temporary compilation directory, different from
> /tmp, but couldn't find a parameter for that.
>
> Regards,
> Erwan
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]