diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-10-11 18:45:38 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-10-12 17:47:36 +0100 |
commit | 140281898f21f707582f395918e5234bdb67e435 (patch) | |
tree | f6445e34c872c22357a6a5e2616f8931170ceeb9 /solenv/bin | |
parent | 20c0339311df0a14229c2786ecf6440bd8c1fd61 (diff) |
elide all dependencies on .hdl files, they're ~all duplicated by .hpp
Also - verified that codemaker touches both .hdl and .hpp regardless
of whether the contents changed in anyway under gbuild.
Change-Id: I391e9cf952c61a6c59087cd7cd0ddc8c54a14df3
Diffstat (limited to 'solenv/bin')
-rw-r--r-- | solenv/bin/concat-deps.c | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c index 5180f46a6a78..11571ee5c756 100644 --- a/solenv/bin/concat-deps.c +++ b/solenv/bin/concat-deps.c @@ -710,11 +710,34 @@ static inline void eat_space(char ** token) } } +/* + * Prune LibreOffice specific duplicate dependencies to improve + * gnumake startup time, and shrink the disk-space footprint. + */ +static inline int elide_dependency(const char* key, int key_len) +{ +#if 0 + { + int i; + fprintf (stderr, "elide?!: '"); + for (i = 0; i < key_len; i++) { + fprintf (stderr, "%c", key[i]); + } + fprintf (stderr, "'\n"); + } +#endif + + /* .hdl files are always matched by .hpp */ + if (key_len > 4 && !strncmp(key + key_len - 4, ".hdl", 4)) + return 1; + return 0; +} + /* prefix paths to absolute */ static inline void print_fullpaths(char* line) { -char* token; -char* end; + char* token; + char* end; token = line; eat_space(&token); @@ -724,15 +747,16 @@ char* end; while (*end && (' ' != *end) && ('\t' != *end)) { ++end; } - if(*token == ':' || *token == '\\' || *token == '/' || *token == '$' - || ':' == token[1]) + int token_len = end - token; + if(elide_dependency(token, token_len)) + ; /* don't output it */ + else if(*token == ':' || *token == '\\' || *token == '/' || + *token == '$' || ':' == token[1]) { - fwrite(token, end - token, 1, stdout); + fwrite(token, token_len, 1, stdout); } else { - fputs(base_dir_var, stdout); - fputc('/', stdout); fwrite(token, end - token, 1, stdout); } fputc(' ', stdout); @@ -741,6 +765,7 @@ char* end; } } + static int _process(struct hash* dep_hash, char* fn) { int rc; @@ -795,7 +820,9 @@ off_t size; * these are the one for which we want to filter * duplicate out */ - if(hash_store(dep_hash, base, (int)(cursor_out - base))) + int key_len = cursor_out - base; + if(!elide_dependency(base,key_len - 1) && + hash_store(dep_hash, base, key_len)) { /* DO NOT modify base after it has been added as key by hash_store */ |