Delete output files if this is a failed run.
Otherwise, the fail will stop a Makefile from progressing, but if you immediately run the build again, Make will think the output files are up to date, since they are newer (albeit incomplete/incorrect). FossilOrigin-Name: e38c08d9cdeb0476ac1a77cd3f29f547a8205835
This commit is contained in:
parent
42585cf73a
commit
f5ad824071
38
manifest
38
manifest
@ -1,8 +1,8 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
C Added\s%expect\sdirective,\sto\sconsider\sa\scertain\snumber\sof\sconflicts\s"correct."\n\nThis\shas\sthe\sside\seffect\sof\schanging\sthe\sprocess\sexit\scode\sto\snever\soverflow.
|
||||
D 2010-02-14T05:19:56
|
||||
C Delete\soutput\sfiles\sif\sthis\sis\sa\sfailed\srun.\n\nOtherwise,\sthe\sfail\swill\sstop\sa\sMakefile\sfrom\sprogressing,\sbut\sif\syou\nimmediately\srun\sthe\sbuild\sagain,\sMake\swill\sthink\sthe\soutput\sfiles\sare\sup\sto\ndate,\ssince\sthey\sare\snewer\s(albeit\sincomplete/incorrect).
|
||||
D 2010-02-14T05:34:43
|
||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||
F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
|
||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||
@ -765,7 +765,7 @@ F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b
|
||||
F tool/fragck.tcl 5265a95126abcf6ab357f7efa544787e5963f439
|
||||
F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4
|
||||
F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5
|
||||
F tool/lemon.c 415104859db0e4badd3571dee4a60582297ebaaa
|
||||
F tool/lemon.c 83edd1726151a939d0e5f4d30d1775b53196a42e
|
||||
F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc
|
||||
F tool/mkkeywordhash.c d2e6b4a5965e23afb80fbe74bb54648cd371f309
|
||||
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
|
||||
@ -790,24 +790,24 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||
P e6cbe1e5ee80db282a41951b805b7bd8b13adf28
|
||||
R a52aa69eba0e0915125e4230ac657715
|
||||
P d8bab8cf0bc3fbd4c489c31a65d724dda2944d83
|
||||
R f18701bb0bf4342a5fa49e46ec7b784c
|
||||
U icculus
|
||||
Z f5a330aab159045deb825a581ad23995
|
||||
Z 9daac77a325dba22777be0affa01d6ac
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG/MacGPG2 v2.0.14 (Darwin)
|
||||
|
||||
iQIcBAEBAgAGBQJLd4gDAAoJEDDcKcGyC63VQkkQAJmHE1TfQc5uu5XhBLZ+kexv
|
||||
dZ1QOkvx9yV2mX+2GG1QZgQpUaYaBIaP7rRtFuIZN+I8sqkcFxjG9SARWEYArtJj
|
||||
udPUnNn6CVmsp7isbBZYBDw2UhsH0B00uOQvxCdEDT36MUjtkxjiM2T1M8lp+aAH
|
||||
jmxilkTSVojq6WJE1/oTVNcMSJnNaEI7fi0GvmBzaxOGalxis8miiBwpVv/3CY39
|
||||
chkrTITynbJtwGMoUikNLlVYfuXAfTDBAQYAZT5b50QAYfA/S5l9g+C3KMY9ffNa
|
||||
XZwBZu9DCBtdv57D8koUoCYcA0bUr9dyT6GrTgJORq5ePqtoXU2rLB3F1ckkuN2a
|
||||
hkScfFj8TjYsik1Oou8GvN5CtUihq1ekCUFyh/M+vLHFbLVge+zgUNO57s3mK7e7
|
||||
D+2y9HcY2txBptzjMkNuZgV4DzIqAhjHIK9JmbR/oO2w+NAiYw3wfBiMOEq5kDKT
|
||||
X1u2kOEKFaJhOaGIYnCIjHH3yc9bqzHPIyrwpBoyjtqZnsQbnZZP7hZ2hmjKVXoT
|
||||
O0EQmNsxQw4z6/EFx2/OPr1IhIKON7rwIl2mb1hWczA1GDroNVi+zRDkabMCAWik
|
||||
Fwxwnf4IJsAgd4v8JQi22h+EudRP9s/O24MModCsahBX1xkQKoL3poXEQyYAE0Ki
|
||||
Fg8EO6hKudpsXjb09VvE
|
||||
=XLI+
|
||||
iQIcBAEBAgAGBQJLd4t3AAoJEDDcKcGyC63VLIsP/15NDKg2Ow3n6Mzn9T43RYF3
|
||||
+qMDlBmmS80bYCLjVwuJNTU2EDTEw5/qCrcpnS3pqPtBwObVrA934v9Q9wZFMY/a
|
||||
zhrNgnduUl/KIvYQkdJWgi8GFUn7zOJzkeZeZnW2Qx0QIlN+cNRucpnrG292CnWK
|
||||
9Xa/jHD6eiv1Zdi4mhkcP/bISERHQk7Wf5KoCZOw7K/yHECnc2dV8jnzk19gGzBV
|
||||
Z9MHC6WwSwuPGulizlvG/huIn53aWLAXnWr3IMnKOHdMii0eTvRfUu7KQN80zi54
|
||||
CBolUPlV3aJt14DvZm+FRqxnoZ0NW67MjwlU1dL/zxnciVXZhJyE4DDfYkAia341
|
||||
2QVRuKu8KurxWfR7hFDtCKX9MvGpmeyAGUN//njr7mZl/dgIS/h1tJmIW2qQ5aAv
|
||||
S71Q0Pos6wTFuhDptpC/vJWQjb+2fuxU4WjTXpUXYq0UuObUjBu0CIZPG/q3tQOT
|
||||
JB0iSqWCBY3twHh7K1koUK4tQDE75ILLSTxxXDdWls3bAdSadGUF4lgnXNaCtElc
|
||||
3N8vuzr8YfssaLWqENp6pNIKLJNJUiRk4DxFuQfOxoCi1iHT0JLZqe1FSdjaZJWK
|
||||
YXzv0N/fhbqQ/EZyqcLro3lMU6iWCZTvemp/fjFCp5rcm9czvsFcHLODoKL5YqkN
|
||||
wxWpwAcL7ybFSMVfhJRE
|
||||
=otDK
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -1 +1 @@
|
||||
d8bab8cf0bc3fbd4c489c31a65d724dda2944d83
|
||||
e38c08d9cdeb0476ac1a77cd3f29f547a8205835
|
39
tool/lemon.c
39
tool/lemon.c
@ -34,6 +34,24 @@ extern int access();
|
||||
#define MAXRHS 1000
|
||||
#endif
|
||||
|
||||
static const char **made_files = NULL;
|
||||
static int made_files_count = 0;
|
||||
static int successful_exit = 0;
|
||||
static void LemonAtExit(void)
|
||||
{
|
||||
/* if we failed, delete (most) files we made, to unconfuse build tools. */
|
||||
int i;
|
||||
for (i = 0; i < made_files_count; i++) {
|
||||
if (!successful_exit) {
|
||||
remove(made_files[i]);
|
||||
}
|
||||
free((void *) made_files[i]);
|
||||
}
|
||||
free(made_files);
|
||||
made_files_count = 0;
|
||||
made_files = NULL;
|
||||
}
|
||||
|
||||
static char *msort(char*,char**,int(*)(const char*,const char*));
|
||||
|
||||
/*
|
||||
@ -1470,6 +1488,8 @@ char **argv;
|
||||
int exitcode;
|
||||
struct lemon lem;
|
||||
|
||||
atexit(LemonAtExit);
|
||||
|
||||
OptInit(argv,options,stderr);
|
||||
if( version ){
|
||||
printf("Lemon version 1.0\n");
|
||||
@ -1576,6 +1596,7 @@ char **argv;
|
||||
|
||||
/* return 0 on success, 1 on failure. */
|
||||
exitcode = ((lem.errorcnt > 0) || (lem.nconflict != lem.nexpected)) ? 1 : 0;
|
||||
successful_exit = (exitcode == 0);
|
||||
exit(exitcode);
|
||||
return (exitcode);
|
||||
}
|
||||
@ -2831,6 +2852,24 @@ char *mode;
|
||||
lemp->errorcnt++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Add files we create to a list, so we can delete them if we fail. This
|
||||
** is to keep makefiles from getting confused. We don't include .out files,
|
||||
** though: this is debug information, and you don't want it deleted if there
|
||||
** was an error you need to track down.
|
||||
*/
|
||||
if(( *mode=='w' ) && (strcmp(suffix, ".out") != 0)){
|
||||
const char **ptr = (const char **)
|
||||
realloc(made_files, sizeof (const char **) * (made_files_count + 1));
|
||||
char *fname = strdup(lemp->outname);
|
||||
if ((ptr == NULL) || (fname == NULL)) {
|
||||
free(ptr);
|
||||
free(fname);
|
||||
memory_error();
|
||||
}
|
||||
made_files = ptr;
|
||||
made_files[made_files_count++] = fname;
|
||||
}
|
||||
return fp;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user