1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-08-23 09:47:59 +00:00

56 Commits

Author SHA1 Message Date
Dmitry Selyutin cf235b0d1f module: fix test_module calculations 2018-07-07 17:58:43 +03:00
Dmitry Selyutin b42ec0c334 module: fix autoconf version check 2018-07-05 22:27:09 +03:00
Dmitry Selyutin aedc7d8aef module: custom hook for licenses field 2018-07-03 22:59:04 +03:00
Dmitry Selyutin 0b037a4eb4 module: fix initial values for properties 2018-07-02 01:03:15 +03:00
Dmitry Selyutin 510c5fe20d modules: swap dependencies and demanders; cleanup 2018-06-28 01:03:59 +03:00
Dmitry Selyutin fdd742b223 minor code cleanup 2018-02-10 19:01:32 +03:00
Dmitry Selyutin ecea1586e6 simplify properties; improve performance 2018-02-04 13:13:13 +03:00
Dmitry Selyutin cee75f5910 refactored generators; bugfix; tests Makefile.am 2018-01-29 19:08:46 +03:00
Dmitry Selyutin 2c677cf153 module: override applicability and test properties 2018-01-17 21:37:36 +03:00
Dmitry Selyutin 5b8fc9cba4 read-only modules; module cache; various fixes
Since gnulib-tool does not modify modules, it is OK to initialize each
module only once. Moreover, since most of the time is spent upon
executing transitive closures and each transitive closure stores all
modules into different lists, it is also a good idea to calculate the
hash only once for read-only modules. These simple additions make
gnulib-tool much faster than before, since each module is initialized
only once-per-run and has a constant hash value.

For example, an invocation of pygnulib.py inside wget2 takes about 0.5
seconds until it completes gnulib-comp.m4 generation; previously it used
to take up to 8 seconds. Needless to say that performing the same task
is much slower when using the good old gnulib-tool: in my experiments
it takes about a minute to complete gnulib-comp.m4 generation.

Some of the TransitiveClosure methods considered useful enough to be
also present as a part of Database class. The refactoring also revealed
that conditional modules computation was implemented incorrectly; this
code was fixed. Moreover, this part of functionality was moved into the
__init__ section, which also saves several milliseconds since it is not
necessary to check whether conditional modules table exists upon each
conditional() invocation.
2018-01-13 18:42:02 +03:00
Dmitry Selyutin fed873464b module: a faster hash computation 2018-01-12 23:09:16 +03:00
Dmitry Selyutin fa9e720c8a module: fix transitive closure algorithm 2018-01-12 23:05:54 +03:00
Dmitry Selyutin 36cb8f7650 module: generic hash and comparison for dummy 2018-01-11 22:21:42 +03:00
Dmitry Selyutin 962ee91a49 dummy singleton; update module hash and properties 2018-01-11 22:17:31 +03:00
Dmitry Selyutin 23f7be63fd generic cleanup; bug fixes; gnulib-comp generator
In order to implement correct gnulib-comp.m4 generation, the whole
conditional dependencies calculation algorithm had to be rewritten.
This patch fixes transitive closure algorithm so that it handles all
conditions correctly. Most of the transitive closure functionality was
separated into a standalone TransitiveClosure class to provide a fast
access to transitive closure results (thus incorporating almost all
functionality of the pygnulib.module.Database class).

The transitive closure is usually performed twice: the base one checks
dependencies for the base set of modules, while the full one also takes
the corresponding tests into account. A standalone Database class was
created to perform both closures in one shot and provide an easy access
to all required module and file lists. This allowed to incorporate some
code from the main script: dummy module handling, libtests.a presense,
module and file lists processing.

Yet another small change is that there is a special DummyModule object,
representing the well-known gnulib dummy module. It was created since
the original gnulib dummy module is unlikely to change quite often, so
it acts like special placeholder value.

Finally the naming convention was changed to longer names again.
2018-01-07 23:55:40 +03:00
Dmitry Selyutin 1d5e027c34 module: database refactoring; consistent hashes 2017-12-26 23:30:51 +03:00
Dmitry Selyutin 34b85028c8 module: module database implementation 2017-12-21 00:57:56 +03:00
Dmitry Selyutin ff3a5a6407 miscellaneousfixes; po files and gnulib-cache generation 2017-12-17 23:14:19 +03:00
Dmitry Selyutin fc6154af7f library Makefile generator 2017-12-12 01:02:27 +03:00
Dmitry Selyutin c10fbab8aa module: gnumake support; code cleanup 2017-12-12 00:58:08 +03:00
Dmitry Selyutin 379ea7054e module: nested automake conditionals workaround 2017-12-04 19:58:34 +03:00
Dmitry Selyutin b729e9a48a module: unconditional automake snippet 2017-12-04 19:46:20 +03:00
Dmitry Selyutin 5ba053f4c7 module: __enter__ and __exit__ methods 2017-10-22 23:57:55 +03:00
Dmitry Selyutin 6b50d01005 module: reorder methods 2017-10-22 23:56:20 +03:00
Dmitry Selyutin f437557d5d module: simplify file table generation 2017-10-22 23:18:12 +03:00
Dmitry Selyutin 8464a64618 style: prefer using a single underscore 2017-10-22 23:13:50 +03:00
Dmitry Selyutin 36283c6dea config: aggregate all options 2017-10-20 22:46:49 +03:00
Dmitry Selyutin 918275e1f4 module: fix dummy_required helper 2017-10-01 20:25:50 +03:00
Dmitry Selyutin 75275916e3 module: filelist helper 2017-09-29 22:47:16 +03:00
Dmitry Selyutin c27339b33c pygnulib: deprecate legacy formatting 2017-09-29 21:12:41 +03:00
Dmitry Selyutin c22df350c3 module: more efficient hash implementation 2017-09-29 21:12:41 +03:00
Dmitry Selyutin 4907dfed87 module: yet another fix in transitive closure; style changes 2017-09-29 00:51:41 +03:00
Dmitry Selyutin 166ea8e32e module: multiple statuses support; fixed transitive closure 2017-09-29 00:12:01 +03:00
Dmitry Selyutin 2c1699623e module: efficient hash implementation 2017-09-28 20:54:31 +03:00
Dmitry Selyutin 27c3e05f87 module: fix typo (is -> in) 2017-09-28 10:46:01 +03:00
Dmitry Selyutin f53c152e3a module: use list on line-by-line iteration 2017-09-28 10:05:15 +03:00
Dmitry Selyutin 1a4b35ba21 module: add missing argument 2017-09-28 10:03:35 +03:00
Dmitry Selyutin f03623f280 module: use sets instead of lists 2017-09-28 10:03:06 +03:00
Dmitry Selyutin fb7321a032 deprecate LicenseSet (use a simple set); licenses constants 2017-09-28 09:58:25 +03:00
Dmitry Selyutin b81e475244 module: libtests_required and dummy_required helpers 2017-09-26 22:40:34 +03:00
Dmitry Selyutin c080078182 module: transform transitive closure back into function 2017-09-26 22:36:56 +03:00
Dmitry Selyutin c19b1ab835 module: relax type check after the last commit 2017-09-26 10:13:38 +03:00
Dmitry Selyutin ba7383af06 refactor transitive closure into module table 2017-09-19 22:40:10 +03:00
Dmitry Selyutin 8f207ff26c module: fix applicability 2017-09-19 22:36:34 +03:00
Dmitry Selyutin e13a022a6d module: strip empty lines and comments in lists 2017-09-16 22:31:18 +03:00
Dmitry Selyutin 84ea23028c module: quick status tests 2017-09-16 22:30:52 +03:00
Dmitry Selyutin c2a0b0d14d update documentation strings 2017-09-15 23:11:14 +03:00
Dmitry Selyutin 7fa71e92bc module: directives as strings; dict-compatible methods 2017-09-14 22:46:59 +03:00
Dmitry Selyutin d1279d823a dict improvements: iteration args, dict comprehension 2017-09-13 00:48:10 +03:00
Dmitry Selyutin d851108387 miscellaneous bug fixes and improvements 2017-09-13 00:26:34 +03:00