51 Commits
Author SHA1 Message Date
Dmitry Selyutin eef2b8c058 pygnulib: fix "mention" section paths 2018-07-08 23:32:30 +03:00
Dmitry Selyutin 1dc6d9fb83 pygnulib: fixed ignore files; fixed logging 2018-07-08 23:20:47 +03:00
Dmitry Selyutin c6c7e33ac1 generator: fix subdirs for gnulib_comp 2018-07-05 22:27:09 +03:00
Dmitry Selyutin 679e16886f vfs: multiple overrides in lookup routine 2018-07-05 22:27:09 +03:00
Dmitry Selyutin 46d9c61e7a pygnulib: fix output regarding Makefile.am 2018-07-05 00:06:31 +03:00
Dmitry Selyutin 4420b71bbf misc: optional configuration paths 2018-07-04 23:50:33 +03:00
Dmitry Selyutin 3160b12d1b pygnulib: fix transformations of CVS paths 2018-07-04 10:19:24 +03:00
Dmitry Selyutin 5d7bebc99b pygnulib: support paths in transformations 2018-07-02 22:55:05 +03:00
Dmitry Selyutin 21a570555d pygnulib: remove redundant sign 2018-07-02 01:09:52 +03:00
Dmitry Selyutin 627e334010 pygnulib: support file transformation routines 2018-07-02 01:05:10 +03:00
Dmitry Selyutin 9b3c883352 pygnulib: postpone ignore files backup 2018-06-29 10:05:31 +03:00
Dmitry Selyutin 4994423bd0 pygnulib: deprecate unused variable 2018-06-29 10:04:59 +03:00
Dmitry Selyutin d5cf9db347 pygnulib: fix substitutions; backup removed files 2018-06-29 01:47:29 +03:00
Dmitry Selyutin c8822295be pygnulib: support VCS files 2018-06-29 00:25:54 +03:00
Dmitry Selyutin fdd742b223 minor code cleanup 2018-02-10 19:01:32 +03:00
Dmitry Selyutin a3e9c763ba pygnulib.py: print the final notifications 2018-02-04 13:17:41 +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 9976a64d11 config: autoconf options; version match; cleanup 2018-01-17 21:28:21 +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 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 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 6e5cb3f3ba pygnulib.py: bug fixes; explicit options list 2017-12-03 18:54:05 +03:00
Dmitry Selyutin 844ac488e5 pygnulib.py: support all copy modes 2017-12-02 00:42:30 +03:00
Dmitry Selyutin 31e219f6b3 support multiple override directories 2017-12-01 10:26:13 +03:00
Dmitry Selyutin ac3a11b1e3 pygnulib.py: support basic file actions subset 2017-11-30 23:10:59 +03:00
Dmitry Selyutin 3b8cd8d409 pygnulib.py: simplify prefix table 2017-10-22 12:21:41 +03:00
Dmitry Selyutin 000d698bad vfs: implement Project.mkdir method 2017-10-22 12:18:36 +03:00
Dmitry Selyutin 36283c6dea config: aggregate all options 2017-10-20 22:46:49 +03:00
Dmitry Selyutin a3161b6e62 pygnulib.py: use project VFS 2017-10-20 17:06:07 +03:00
Dmitry Selyutin 4b5db6e015 pygnulib.py: instantiate root and local VFS 2017-10-19 10:11:05 +03:00
Dmitry Selyutin 96bbfbd2f1 pygnulib.py: more file lists; old files <= cache 2017-10-18 10:53:37 +03:00
Dmitry Selyutin e3d2c38fe3 vfs: rename filesystem to vfs 2017-10-05 10:03:21 +03:00
Dmitry Selyutin e35b7fc3f5 pygnulib.py: fix verbosity level check for notices 2017-10-05 10:03:21 +03:00
Dmitry Selyutin 9807823753 pygnulib.py: old and new files generation 2017-10-03 10:52:48 +03:00
Dmitry Selyutin fc3469ad1b pygnulib.py: force cache invocation for some keys 2017-10-03 10:47:18 +03:00
Dmitry Selyutin eb73a5c4db pygnulib.py: determine the final file lists 2017-10-01 20:29:47 +03:00
Dmitry Selyutin 6a9e6be024 pygnulib.py: fetch ac_version if not present 2017-10-01 20:29:13 +03:00
Dmitry Selyutin f0a577e756 pygnulib.py: print main and tests modules iff present 2017-10-01 20:28:10 +03:00
Dmitry Selyutin d1490857a9 pygnulib.py: show banner notices 2017-09-29 10:16:29 +03:00
Dmitry Selyutin 0b03664c91 pygnulib.py: do not call transitive closure twice (copy & paste) 2017-09-29 00:13:18 +03:00
Dmitry Selyutin 84d969199e pygnulib.py: simplify license conflicts detection 2017-09-28 21:08:01 +03:00
Dmitry Selyutin ce1ee3a5c1 pygnulib.py: inform about license incompatibilities 2017-09-28 20:54:31 +03:00
Dmitry Selyutin 1fe4e883db pygnulib.py: transfer script name 2017-09-28 20:54:31 +03:00
Dmitry Selyutin 4d59ac3a03 pygnulib.py: determine incompatible licenses 2017-09-28 10:00:49 +03:00
Dmitry Selyutin 56b5f7edbb use libtests_required and dummy_required helpers 2017-09-26 22:41:19 +03:00
Dmitry Selyutin c080078182 module: transform transitive closure back into function 2017-09-26 22:36:56 +03:00