Giacomo Vercesi
7c3d9a3fcd
Python API: automatically call destructors
...
Use the owning annotation in PipelineC/Prototypes.h to automatically
destroy resources when they go out of scope on the python side.
2022-05-24 08:59:08 +02:00
Massimo Fioravanti
f0a5ffe3b3
revng-pipeline: globals, extractOne and analyses
2022-05-24 08:58:48 +02:00
Giacomo Vercesi
07c23dda8d
revng-deamon: fix GraphQL URL
...
The page was using the wrong attribute to make the GraphQL calls
relative to the debug page's url.
2022-05-24 08:49:16 +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
Alessandro Di Federico
450b0b4013
Minor changes
2022-05-11 09:29:45 +02:00
Ivan Krysak
8a07e67767
Add revng yield assembly tool
2022-05-06 18:51:47 +02:00
Giacomo Vercesi
09d9950aac
daemon: fix debug page in subpaths
2022-05-06 15:04:19 +02:00
Giacomo Vercesi
d13e802c4f
daemon: Disable debug page in production mode
2022-05-06 15:04:19 +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
b9794b84bb
revng.daemon: introduce tests
...
Add end-to-end tests checking that every GraphQL endpoint is properly
working and returning the expected result
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
4f7908753e
Introduce the revng-daemon command
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
172faebacf
Introduce the revng.daemon GraphQL API
...
This commit introduces the `revng.daemon` Python module, a Flask-powered
web application that exposes the functionality from `revng.api` across a
GraphQL API
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
7231ee607a
Introduce PipelineC wrapper for Python
...
Add the revng.api module: a wrapper around the PipelineC API.
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
Giacomo Vercesi
6b9cdbb0ec
Python TupleTreeGenerator: cache type hints
...
This significantly speeds up loading the model.
2022-04-08 17:37:04 +02:00
Giacomo Vercesi
a2b5dbb1dc
TupleTreeGenerator: autogenerate Kind
2022-04-08 17:36:59 +02:00
Giacomo Vercesi
039f7db93e
model::*: ensure Kind -> Class correspondence
2022-04-08 17:31:05 +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
Filippo Cremonese
70a460c46a
TupleTreeGenerator: use dataclasses
...
Give up on pydantic.
2022-03-22 17:52:02 +01:00
Alessandro Di Federico
2b55d1df22
Adopt cmake-format
2022-03-17 18:52:18 +01: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
0aef5adc32
Drop scripts/revng-translate reference
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
586feabd3d
Drop scripts/revng-model-dump
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
Alessandro Di Federico
da7701bd4e
Move all executables except revng to libexec/revng
...
We used to collect all binaries into the `bin/` directory. However this
led to confusions since certain commands where available both as
`revng-command` and `revng command`.
This commit moves all the executables except `revng` into
`libexec/revng`, which, according to FHS, is dedicated to "internal
binaries that are not intended to be executed directly by users or shell
scripts".
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
0e387938be
Move scripts/revng to revng/cli/revng.py
2022-03-16 22:10:15 +01:00
Alessandro Di Federico
997e7f60cb
scripts/renvg: handle revng pipeline
...
Let `scripts/revng` intercept `revng-pipeline` invocations and add, not
only -load, but `-P` (pipelines) too.
2022-03-16 22:10:15 +01:00
Alessandro Di Federico
7d48059800
Turn revng-lift into a script
2022-03-11 15:37:12 +01:00