Massimo Fioravanti
42b623db06
Pipeline: rework CLI organization
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
261a114d6d
Pipeline: corner-case fix in backward deduction
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
0bb115a4f3
revng-pipeline: rework syntax for targets
...
Was: step:container:p/a/t/h:kind
Now: step/container/p/a/t/h:kind
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
4cd5abe2b0
revng-pipeline: introduce --produce and --analyze
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
9c13f8dbdd
Introduce revng-artifact
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
96bd5835d8
revng-pipeline: rework file-to-container syntax
2022-08-10 09:49:24 +02:00
Giacomo Vercesi
e23d238e85
revng.cli: explicitly initialize Commands
...
Commands now require a `setup` function, where the will register the
command instance manually
2022-08-10 09:49:24 +02:00
Alessandro Di Federico
45d563bc15
revng: use ld.so --preload instead of LD_PRELOAD
2022-08-08 13:55:25 +02:00
Alessandro Di Federico
82771be9b5
revng-model-dump: emit YAML
2022-08-08 13:55:25 +02:00
Djordje Todorovic
1243d1061c
Introduce revng model hard-purge
...
In addition, introduce a new model Pass:
revng model opt -prune-unsused-types
2022-07-28 15:02:55 +02:00
Djordje Todorovic
fdb12947a2
Introduce revng model download-pdb
2022-07-28 14:52:50 +02:00
Giacomo Vercesi
7a9c88e9e7
Introduce revng ptml
...
This Oython tool will be used to easily work with PTML.
It currently features two subcommands:
* `cat` prints a PTML to the terminal, with color formatting if
possible;
* `strip` will strip a file of the PTML markup;
2022-07-28 08:49:09 +02:00
Giacomo Vercesi
1a7503183a
revng.cli: dynamically load commands
...
Now `revng.cli` houses the core command-line driver while the individual
commands have been moved to `revng.cli._commands` and are dynamically
loaded.
2022-07-28 08:48:30 +02:00
Giacomo Vercesi
df72bb68b0
GraphQL: introduce CORS headers
...
Add CORS headers to the graphql api. These are set via the REVNG_ORIGINS
environment variable.
2022-06-29 14:50:58 +02:00
Giacomo Vercesi
2fc11ab055
revng daemon: introduce notifications
...
Add the possibility of passing a list of FIFOs to `revng daemon`. These
can be used to notify an external program when a non-reproducible change
(binary, context) has occurred.
2022-06-29 14:50:58 +02:00
Giacomo Vercesi
dd08f2bf96
revng daemon --help: add description
...
Add an extended description to the command `revng daemon` which
details the the environment variables at play when running it.
2022-06-29 14:50:58 +02:00
Giacomo Vercesi
79c6086d0d
revng.api: autodetect files
...
`revng.api` now autodetects files (libraries, pipeline yamls) for
initialization via the same mechanism used by `revng.cli`. This removes
the need to pass them via environment variables from `revng daemon`
and allows easy interaction with python's C API.
2022-06-29 14:49:29 +02:00
Giacomo Vercesi
1cc8c2c20c
Fix pyYAML type error
...
Remove code in revng.cli.model_dump and override_by_name that was used
when the model had tags. The code subclassed the default pyYAML loader
to ignore unknown tags to allow reading the model data easily. Since the
model no longer has tags this code is dead and can be removed.
2022-06-13 18:35:37 +02:00
Alessandro Di Federico
d37c3d3dd8
Fix revng --prefix
...
When running subcommands from a `revng` script the build directory and
the root directory were being swapped.
2022-05-31 11:30:10 +02:00
Massimo Fioravanti
f0a5ffe3b3
revng-pipeline: globals, extractOne and analyses
2022-05-24 08:58:48 +02:00
Alessandro Di Federico
5b39595b77
Minor changes
2022-05-13 15:14:51 +02:00
Alessandro Di Federico
41c21ddb07
revng-daemon: use ASan
2022-05-12 21:55:18 +02:00
Alessandro Di Federico
ccba62b13d
revng opt: do not add --help
2022-05-12 21:54:42 +02:00
Ivan Krysak
8a07e67767
Add revng yield assembly tool
2022-05-06 18:51:47 +02:00
Giacomo Vercesi
3bdf8468b1
Add extra command line options to 'revng daemon'
...
--production runs the server on all interfaces and with debug options
disabled
--hypercorn-args allows to pass extra options to hypercorn when running
revng daemon
2022-05-06 15:04:19 +02:00
Giacomo Vercesi
70f7337f28
Substitute Flask with Starlette
...
In the future we will need to use GraphQL subscriptions. This is done
via websockets and is supported in Ariadne. However this support is
limited to ASGI frameworks, which Flask isn't a part of.
Startlette is a direct depencency of Ariadne, and all of Ariadne's
features are fully integrated with Starlette, so the switch allows to
drop some Flask integration cruft and streamline the revng.daemon
package.
Starlette does not have a built-in development server, instead
Hypercorn, which is an ASGI-compliant HTTP server, is used in place of
Flask's Werkzeug/Gunicorn for both the development and production
server roles.
2022-05-06 15:04:19 +02:00
Giacomo Vercesi
2a89da8d53
revng daemon: properly shut down after tests
...
Fix termination of the daemon process during test, previously it was the
daemon instances were not cleaned up properly and remained running after
the tests
2022-05-06 15:03:51 +02:00
Giacomo Vercesi
f02976faee
revng --help: do not display absolute paths
2022-05-06 15:03:35 +02:00
Alessandro Di Federico
1370763bc4
llvm pipeline: handle - as input
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
cafdd7c6f9
Introduce revng model override-by-name
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
9ca3447b5d
revng.cli: introduce try_run
2022-04-29 17:57:49 +02:00
Giacomo Vercesi
4f7908753e
Introduce the revng-daemon command
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
e5c9141ccc
Refactor revng.cli.support
...
* Removed shadowed `relative` function
* Clean up imports
* Add type hints to functions
* Use Path where possible
2022-04-26 15:05:30 +02:00
Giacomo Vercesi
bbce0b33e5
revng-check-conventions: introduce isort
2022-04-20 09:57:08 +02:00
Giacomo Vercesi
46821cee5f
revng-check-conventions: introduce mypy
2022-04-20 09:57:01 +02:00
Giacomo Vercesi
31a836e48c
revng-check-conventions: introduce flake8
2022-04-20 09:56:44 +02:00
Giacomo Vercesi
d81dc49809
revng-check-conventions: license check
2022-04-20 09:55:18 +02:00
Pietro Fezzardi
7f65b1117a
New AddPrimitiveTypesPipe
...
This pipe is executed during the Lift step and populates the model with
all the required primitive types.
2022-04-12 16:40:27 +02:00
Antonio Frighetto
dddd8ecbcb
Update EFA tests to support CFG out of the model
2022-04-05 15:37:57 +02:00
Alessandro Di Federico
d70c19164e
revng: append search prefixes upon recursion
2022-03-28 14:34:10 +02:00
Alessandro Di Federico
581eab5a28
YAML pipeline: s/module/module.ll/
2022-03-28 12:17:05 +02:00
Massimo Fioravanti
8bbd3b9435
revng-pipeline: move from --quiet to --verbose
2022-03-28 12:17:05 +02:00
Massimo Fioravanti
c05b5dbb28
Steps now represent the *end* of a step
...
A special "begin" step has been introduced.
2022-03-28 12:17:05 +02:00
Massimo Fioravanti
b362d926ec
pipeline: drop implicit rank 0
2022-03-28 12:17:05 +02:00
Alessandro Di Federico
173ad98661
revng driver: introduce --keep-temporaries
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
cdeb1ea507
revng driver: introduce --dry-run
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
6832698e5b
Introduce revng llvm pipeline
...
This is a wrapper to `revng-pipeline` designed to make the adoption of
pipelines easier for places where we are now using `revng opt`.
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
e753e28f43
revng: make more extensive use of relative paths
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
af6305725d
Rewrite revng driver infrastructure
...
It really needed some fresh air.
2022-03-17 16:46:00 +01:00
Alessandro Di Federico
df00a892dd
Introduce revng.cli.lift
2022-03-17 14:10:50 +01:00