fm-weck 1.5.3__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fm_weck/__init__.py +1 -1
- fm_weck/capture.py +1 -1
- fm_weck/cli.py +107 -1
- fm_weck/engine.py +31 -4
- fm_weck/exceptions.py +4 -0
- fm_weck/image_mgr.py +66 -0
- fm_weck/resources/fm_tools/2ls.yml +22 -0
- fm_weck/resources/fm_tools/afltc.yml +59 -0
- fm_weck/resources/fm_tools/aise.yml +28 -1
- fm_weck/resources/fm_tools/aprove.yml +25 -0
- fm_weck/resources/fm_tools/brick.yml +25 -1
- fm_weck/resources/fm_tools/bubaak-split.yml +18 -0
- fm_weck/resources/fm_tools/bubaak.yml +10 -0
- fm_weck/resources/fm_tools/cbmc.yml +12 -0
- fm_weck/resources/fm_tools/cetfuzz.yml +21 -6
- fm_weck/resources/fm_tools/coastal.yml +12 -0
- fm_weck/resources/fm_tools/concurrentwitness2test.yml +25 -2
- fm_weck/resources/fm_tools/cooperace.yml +39 -0
- fm_weck/resources/fm_tools/coveritest.yml +22 -0
- fm_weck/resources/fm_tools/cpa-bam-bnb.yml +16 -1
- fm_weck/resources/fm_tools/cpa-bam-smg.yml +17 -1
- fm_weck/resources/fm_tools/cpa-lockator.yml +17 -1
- fm_weck/resources/fm_tools/cpa-witness2test.yml +13 -3
- fm_weck/resources/fm_tools/cpachecker.yml +150 -10
- fm_weck/resources/fm_tools/cpv.yml +48 -0
- fm_weck/resources/fm_tools/crux.yml +12 -0
- fm_weck/resources/fm_tools/cseq.yml +36 -9
- fm_weck/resources/fm_tools/dartagnan.yml +63 -3
- fm_weck/resources/fm_tools/dasa.yml +70 -0
- fm_weck/resources/fm_tools/deagle.yml +19 -1
- fm_weck/resources/fm_tools/divine.yml +13 -0
- fm_weck/resources/fm_tools/ebf.yml +17 -2
- fm_weck/resources/fm_tools/emergentheta.yml +51 -5
- fm_weck/resources/fm_tools/esbmc-incr.yml +59 -2
- fm_weck/resources/fm_tools/esbmc-kind.yml +59 -2
- fm_weck/resources/fm_tools/fdse.yml +31 -0
- fm_weck/resources/fm_tools/fizzer.yml +32 -3
- fm_weck/resources/fm_tools/frama-c-sv.yml +21 -2
- fm_weck/resources/fm_tools/fshell-witness2test.yml +13 -3
- fm_weck/resources/fm_tools/function-res.yml +64 -0
- fm_weck/resources/fm_tools/fusebmc-ia.yml +20 -6
- fm_weck/resources/fm_tools/fusebmc.yml +25 -4
- fm_weck/resources/fm_tools/gazer-theta.yml +16 -3
- fm_weck/resources/fm_tools/gdart-llvm.yml +16 -1
- fm_weck/resources/fm_tools/gdart.yml +49 -2
- fm_weck/resources/fm_tools/goblint-par.yml +66 -0
- fm_weck/resources/fm_tools/goblint.yml +239 -12
- fm_weck/resources/fm_tools/goblitch.yml +77 -0
- fm_weck/resources/fm_tools/graves-par.yml +4 -1
- fm_weck/resources/fm_tools/graves.yml +20 -5
- fm_weck/resources/fm_tools/gwit.yml +13 -3
- fm_weck/resources/fm_tools/hornix.yml +26 -4
- fm_weck/resources/fm_tools/hybridtiger.yml +12 -1
- fm_weck/resources/fm_tools/iekke.yml +73 -0
- fm_weck/resources/fm_tools/infer.yml +12 -0
- fm_weck/resources/fm_tools/java-ranger.yml +18 -0
- fm_weck/resources/fm_tools/jayhorn.yml +50 -4
- fm_weck/resources/fm_tools/jbmc.yml +17 -1
- fm_weck/resources/fm_tools/jcwit.yml +12 -2
- fm_weck/resources/fm_tools/jdart.yml +16 -1
- fm_weck/resources/fm_tools/jlisa.yml +105 -0
- fm_weck/resources/fm_tools/klee.yml +12 -1
- fm_weck/resources/fm_tools/kleef.yml +18 -0
- fm_weck/resources/fm_tools/korn.yml +23 -1
- fm_weck/resources/fm_tools/lazycseq.yml +16 -1
- fm_weck/resources/fm_tools/legion-symcc.yml +5 -1
- fm_weck/resources/fm_tools/legion.yml +7 -4
- fm_weck/resources/fm_tools/lf-checker.yml +16 -1
- fm_weck/resources/fm_tools/liv.yml +48 -3
- fm_weck/resources/fm_tools/locksmith.yml +16 -1
- fm_weck/resources/fm_tools/metaval++.yml +1 -1
- fm_weck/resources/fm_tools/metaval.yml +121 -6
- fm_weck/resources/fm_tools/mlb.yml +23 -1
- fm_weck/resources/fm_tools/mopsa.yml +100 -7
- fm_weck/resources/fm_tools/muval.yml +120 -0
- fm_weck/resources/fm_tools/nacpa.yml +57 -2
- fm_weck/resources/fm_tools/nitwit.yml +13 -3
- fm_weck/resources/fm_tools/ogchecker.yml +47 -0
- fm_weck/resources/fm_tools/owic.yml +16 -2
- fm_weck/resources/fm_tools/pesco.yml +19 -1
- fm_weck/resources/fm_tools/pichecker.yml +16 -1
- fm_weck/resources/fm_tools/pinaka.yml +14 -1
- fm_weck/resources/fm_tools/predatorhp.yml +12 -0
- fm_weck/resources/fm_tools/proton.yml +26 -1
- fm_weck/resources/fm_tools/prtest.yml +23 -0
- fm_weck/resources/fm_tools/pysvlib-linter.yml +77 -0
- fm_weck/resources/fm_tools/pysvlib-validator.yml +76 -0
- fm_weck/resources/fm_tools/racerf.yml +27 -4
- fm_weck/resources/fm_tools/re3ver.yml +78 -0
- fm_weck/resources/fm_tools/rizzer.yml +11 -1
- fm_weck/resources/fm_tools/schema.yml +185 -4
- fm_weck/resources/fm_tools/seal.yml +67 -0
- fm_weck/resources/fm_tools/sikraken.yml +25 -1
- fm_weck/resources/fm_tools/spf.yml +14 -1
- fm_weck/resources/fm_tools/sv-sanitizers.yml +46 -3
- fm_weck/resources/fm_tools/svf-svc.yml +33 -1
- fm_weck/resources/fm_tools/svlibchecker.yml +82 -0
- fm_weck/resources/fm_tools/swat.yml +30 -0
- fm_weck/resources/fm_tools/symbiotic-witch.yml +31 -6
- fm_weck/resources/fm_tools/symbiotic.yml +64 -1
- fm_weck/resources/fm_tools/testcoca.yml +53 -0
- fm_weck/resources/fm_tools/testcov.yml +97 -0
- fm_weck/resources/fm_tools/theta.yml +100 -2
- fm_weck/resources/fm_tools/thorn.yml +22 -1
- fm_weck/resources/fm_tools/tracerx-wp.yml +18 -0
- fm_weck/resources/fm_tools/tracerx.yml +22 -0
- fm_weck/resources/fm_tools/uautomizer.yml +186 -19
- fm_weck/resources/fm_tools/ugemcutter.yml +97 -9
- fm_weck/resources/fm_tools/ukojak.yml +55 -9
- fm_weck/resources/fm_tools/uparalizer.yml +78 -0
- fm_weck/resources/fm_tools/ureferee.yml +83 -13
- fm_weck/resources/fm_tools/utaipan.yml +61 -9
- fm_weck/resources/fm_tools/utestgen.yml +36 -0
- fm_weck/resources/fm_tools/veriabs.yml +12 -0
- fm_weck/resources/fm_tools/veriabsl.yml +16 -0
- fm_weck/resources/fm_tools/verioover.yml +16 -1
- fm_weck/resources/fm_tools/wasp-c.yml +16 -1
- fm_weck/resources/fm_tools/wit4java.yml +36 -4
- fm_weck/resources/fm_tools/witch.yml +29 -4
- fm_weck/resources/fm_tools/witnesslint.yml +111 -8
- fm_weck/resources/fm_tools/witnessmap.yml +29 -1
- fm_weck/zenodo.py +381 -0
- {fm_weck-1.5.3.dist-info → fm_weck-1.6.0.dist-info}/METADATA +2 -1
- fm_weck-1.6.0.dist-info/RECORD +188 -0
- {fm_weck-1.5.3.dist-info → fm_weck-1.6.0.dist-info}/WHEEL +1 -1
- fm_weck-1.5.3.dist-info/RECORD +0 -171
- {fm_weck-1.5.3.dist-info → fm_weck-1.6.0.dist-info}/entry_points.txt +0 -0
fm_weck/__init__.py
CHANGED
fm_weck/capture.py
CHANGED
|
@@ -12,7 +12,7 @@ from typing import Literal
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Capture:
|
|
15
|
-
def __init__(self, target: io.TextIOBase, stream: Literal["stdout, stderr, stdin"] = "stdout"):
|
|
15
|
+
def __init__(self, target: io.TextIOBase, stream: Literal["stdout", "stderr", "stdin"] = "stdout"):
|
|
16
16
|
self.io_stream = getattr(sys, stream)
|
|
17
17
|
self._copy = os.dup(self.io_stream.fileno())
|
|
18
18
|
os.dup2(target.fileno(), self.io_stream.fileno())
|
fm_weck/cli.py
CHANGED
|
@@ -41,7 +41,7 @@ from fm_weck.config import _SEARCH_ORDER
|
|
|
41
41
|
from fm_weck.resources import fm_tools_choice_map, iter_fm_data, property_choice_map
|
|
42
42
|
|
|
43
43
|
from . import __version__
|
|
44
|
-
from .exceptions import NoImageError
|
|
44
|
+
from .exceptions import NoImageError, ZenodoError
|
|
45
45
|
|
|
46
46
|
logger = logging.getLogger(__name__)
|
|
47
47
|
|
|
@@ -130,6 +130,12 @@ def add_shared_args_for_run_modes(parser):
|
|
|
130
130
|
add_tool_arg(parser, nargs=None)
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
def add_shared_args_for_zenodo_modes(parser):
|
|
134
|
+
parser.add_argument(
|
|
135
|
+
"--token", help="Specify the Zenodo token to be used one time, without saving it.", type=str, default=None
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
133
139
|
def add_shared_args_for_client(parser):
|
|
134
140
|
parser.add_argument(
|
|
135
141
|
"--host",
|
|
@@ -338,6 +344,43 @@ def parse(raw_args: list[str]) -> Tuple[Callable[[], None], Namespace]:
|
|
|
338
344
|
).completer = ShellCompletion.versions_completer # type: ignore[assignment]
|
|
339
345
|
versions.set_defaults(main=main_versions)
|
|
340
346
|
|
|
347
|
+
pull = subparsers.add_parser("pull", help="Pull an image from Zenodo.")
|
|
348
|
+
pull.add_argument(
|
|
349
|
+
"DOI",
|
|
350
|
+
help="The DOI of an image to be pulled from Zenodo.",
|
|
351
|
+
type=str,
|
|
352
|
+
default=None,
|
|
353
|
+
)
|
|
354
|
+
pull.add_argument("--dir", "-d", help="The directory to download the image to.", type=str, default=None)
|
|
355
|
+
pull.add_argument("--force", "-f", help="Force pull an image.", action="store_true")
|
|
356
|
+
pull.add_argument("--sandbox", help="Use Zenodo sandbox.", action="store_true")
|
|
357
|
+
pull.set_defaults(main=main_pull)
|
|
358
|
+
|
|
359
|
+
push = subparsers.add_parser("push", help="Push an image to Zenodo.")
|
|
360
|
+
push.add_argument(
|
|
361
|
+
"IMAGE",
|
|
362
|
+
help="The image to be pushed to Zenodo.",
|
|
363
|
+
type=str,
|
|
364
|
+
default=None,
|
|
365
|
+
)
|
|
366
|
+
push.add_argument("--sandbox", help="Use Zenodo sandbox.", action="store_true")
|
|
367
|
+
add_shared_args_for_zenodo_modes(push)
|
|
368
|
+
push.set_defaults(main=main_push)
|
|
369
|
+
|
|
370
|
+
publish = subparsers.add_parser("publish", help="Publish an image on Zenodo.")
|
|
371
|
+
publish.add_argument(
|
|
372
|
+
"IMAGE",
|
|
373
|
+
help="The image to be published to Zenodo.",
|
|
374
|
+
type=str,
|
|
375
|
+
default=None,
|
|
376
|
+
)
|
|
377
|
+
publish.add_argument("--sandbox", help="Use Zenodo sandbox.", action="store_true")
|
|
378
|
+
add_shared_args_for_zenodo_modes(publish)
|
|
379
|
+
publish.set_defaults(main=main_publish)
|
|
380
|
+
|
|
381
|
+
config = subparsers.add_parser("config", help="Change the value of a config element.")
|
|
382
|
+
config.add_argument("--token", help="Save the Zenodo token to be used with the Zenodo API.", type=str, default=None)
|
|
383
|
+
config.set_defaults(main=main_config)
|
|
341
384
|
server = subparsers.add_parser("server", aliases=["s"], help="Run fm-weck remotely on a server.")
|
|
342
385
|
server.add_argument(
|
|
343
386
|
"--port",
|
|
@@ -669,6 +712,69 @@ def main_versions(args: argparse.Namespace):
|
|
|
669
712
|
VersionListing(tool_paths).print_versions()
|
|
670
713
|
|
|
671
714
|
|
|
715
|
+
def main_pull(args: argparse.Namespace):
|
|
716
|
+
from .engine import Engine
|
|
717
|
+
from .zenodo import ZenodoMgr
|
|
718
|
+
|
|
719
|
+
config = Config()
|
|
720
|
+
engine = Engine.from_config(config)
|
|
721
|
+
|
|
722
|
+
try:
|
|
723
|
+
zenodo_mgr = ZenodoMgr(
|
|
724
|
+
engine=engine, access_token=None, image=None, doi=args.DOI, is_sandbox=args.sandbox, config=config._config
|
|
725
|
+
)
|
|
726
|
+
zenodo_mgr.pull(args.dir, args.force)
|
|
727
|
+
except ZenodoError as e:
|
|
728
|
+
logger.error(e)
|
|
729
|
+
return 1
|
|
730
|
+
return 0
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
def main_push(args: argparse.Namespace):
|
|
734
|
+
from .engine import Engine
|
|
735
|
+
from .zenodo import ZenodoMgr
|
|
736
|
+
|
|
737
|
+
config = Config()
|
|
738
|
+
engine = Engine.from_config(config)
|
|
739
|
+
|
|
740
|
+
try:
|
|
741
|
+
zenodo_mgr = ZenodoMgr(
|
|
742
|
+
engine, access_token=args.token, image=args.IMAGE, doi=None, is_sandbox=args.sandbox, config=config._config
|
|
743
|
+
)
|
|
744
|
+
zenodo_mgr.push()
|
|
745
|
+
except (ValueError, ZenodoError) as e:
|
|
746
|
+
logger.error(e)
|
|
747
|
+
return 1
|
|
748
|
+
return 0
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
def main_publish(args: argparse.Namespace):
|
|
752
|
+
from .engine import Engine
|
|
753
|
+
from .zenodo import ZenodoMgr
|
|
754
|
+
|
|
755
|
+
config = Config()
|
|
756
|
+
engine = Engine.from_config(config)
|
|
757
|
+
|
|
758
|
+
try:
|
|
759
|
+
zenodo_mgr = ZenodoMgr(
|
|
760
|
+
engine, access_token=args.token, image=args.IMAGE, doi=None, is_sandbox=args.sandbox, config=config._config
|
|
761
|
+
)
|
|
762
|
+
zenodo_mgr.publish()
|
|
763
|
+
except ZenodoError as e:
|
|
764
|
+
logger.error(e)
|
|
765
|
+
return 1
|
|
766
|
+
return 0
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
def main_config(args: argparse.Namespace):
|
|
770
|
+
if args.token:
|
|
771
|
+
from .zenodo import ZenodoMgr
|
|
772
|
+
|
|
773
|
+
ZenodoMgr.save_zenodo_token(Config(), args.token)
|
|
774
|
+
|
|
775
|
+
return 0
|
|
776
|
+
|
|
777
|
+
|
|
672
778
|
def main_server(args: argparse.Namespace):
|
|
673
779
|
from .grpc_service import serve
|
|
674
780
|
|
fm_weck/engine.py
CHANGED
|
@@ -205,7 +205,7 @@ class Engine(ABC):
|
|
|
205
205
|
|
|
206
206
|
return base + [self.image, *_command]
|
|
207
207
|
|
|
208
|
-
def assemble_smoke_test_command(self, command:
|
|
208
|
+
def assemble_smoke_test_command(self, command: list[str | Path]) -> list[str | Path]:
|
|
209
209
|
base = self.base_command()
|
|
210
210
|
if self.add_benchexec_capabilities:
|
|
211
211
|
base += self.benchexec_capabilities()
|
|
@@ -224,7 +224,7 @@ class Engine(ABC):
|
|
|
224
224
|
|
|
225
225
|
return base + command
|
|
226
226
|
|
|
227
|
-
def _prep_command(self, command:
|
|
227
|
+
def _prep_command(self, command: Iterable[str]) -> tuple[str | Path, ...]:
|
|
228
228
|
"""We want to map absolute paths of the current working directory to the
|
|
229
229
|
working directory of the container."""
|
|
230
230
|
|
|
@@ -369,6 +369,33 @@ class Engine(ABC):
|
|
|
369
369
|
|
|
370
370
|
return tag
|
|
371
371
|
|
|
372
|
+
def inspect_image(self, image: str):
|
|
373
|
+
cmd = self.engine() + ["inspect", image]
|
|
374
|
+
logger.debug("Running command: %s", cmd)
|
|
375
|
+
return subprocess.run(cmd, capture_output=True).returncode
|
|
376
|
+
|
|
377
|
+
def save_image(self, image: str, output_path: Path):
|
|
378
|
+
cmd = self.engine() + ["save", "--format", "oci-archive", "--output", output_path, image]
|
|
379
|
+
logger.debug("Running command: %s", cmd)
|
|
380
|
+
logging.info("Saving image to file... this may take a while.")
|
|
381
|
+
subprocess.run(cmd, capture_output=True)
|
|
382
|
+
logging.info("Image saved.")
|
|
383
|
+
|
|
384
|
+
def load_image(self, image: str | Path):
|
|
385
|
+
cmd = self.engine() + ["load", "--input", str(image)]
|
|
386
|
+
logger.debug("Running command: %s", cmd)
|
|
387
|
+
subprocess.run(cmd, capture_output=True)
|
|
388
|
+
|
|
389
|
+
def tag_image(self, image: str, tag: str):
|
|
390
|
+
cmd = self.engine() + ["tag", image, tag]
|
|
391
|
+
logger.debug("Running command: %s", cmd)
|
|
392
|
+
subprocess.run(cmd, capture_output=True)
|
|
393
|
+
|
|
394
|
+
def tag_exists(self, tag: str) -> bool:
|
|
395
|
+
cmd = self.engine() + ["images", "--format", "{{.Repository}}:{{.Tag}}"]
|
|
396
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
397
|
+
return tag in result.stdout
|
|
398
|
+
|
|
372
399
|
def _run_process_without_attaching_io(
|
|
373
400
|
self, command: tuple[str, ...] | list[str], timeout_sec: Optional[float] = None
|
|
374
401
|
) -> RunResult:
|
|
@@ -381,7 +408,7 @@ class Engine(ABC):
|
|
|
381
408
|
signal.signal(signal.SIGINT, terminate_process_group)
|
|
382
409
|
signal.signal(signal.SIGTERM, terminate_process_group)
|
|
383
410
|
|
|
384
|
-
logger.debug("\n\nRunning command:\n%s\n\n", " ".join(map(str, command)))
|
|
411
|
+
logger.debug("\n\nRunning command:\n%s\n\n", " ".join(map(str, command))) # type: ignore
|
|
385
412
|
process = subprocess.Popen(command)
|
|
386
413
|
|
|
387
414
|
try:
|
|
@@ -408,7 +435,7 @@ class Engine(ABC):
|
|
|
408
435
|
register_signal(signal.SIGINT, terminate_process_group)
|
|
409
436
|
register_signal(signal.SIGTERM, terminate_process_group)
|
|
410
437
|
|
|
411
|
-
logger.debug("\n\nRunning command:\n%s\n\n", " ".join(map(str, command)))
|
|
438
|
+
logger.debug("\n\nRunning command:\n%s\n\n", " ".join(map(str, command))) # type: ignore
|
|
412
439
|
|
|
413
440
|
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
414
441
|
full_stdout = io.StringIO()
|
fm_weck/exceptions.py
CHANGED
fm_weck/image_mgr.py
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
|
|
8
8
|
import logging
|
|
9
|
+
import tempfile
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
from typing import TYPE_CHECKING
|
|
11
12
|
|
|
@@ -25,6 +26,7 @@ if TYPE_CHECKING:
|
|
|
25
26
|
from fm_weck.engine import Engine
|
|
26
27
|
|
|
27
28
|
CONTAINERFILE = Path(__file__).parent / "resources" / "Containerfile"
|
|
29
|
+
logger = logging.getLogger(__name__)
|
|
28
30
|
|
|
29
31
|
logger = logging.getLogger(__name__)
|
|
30
32
|
|
|
@@ -64,3 +66,67 @@ class ImageMgr(object):
|
|
|
64
66
|
spinner.ok("✅ ")
|
|
65
67
|
|
|
66
68
|
return tag
|
|
69
|
+
|
|
70
|
+
def prepare_image_for_zenodo(self, engine: "Engine", image_name: str) -> tuple[str, str, Path]:
|
|
71
|
+
"""
|
|
72
|
+
Prepare an image for Zenodo upload, by retreiving the image tarball.
|
|
73
|
+
|
|
74
|
+
:return: A tuple containing the normalized image name and tarball path.
|
|
75
|
+
|
|
76
|
+
Raises:
|
|
77
|
+
ValueError: If the image is invalid or does not exist.
|
|
78
|
+
"""
|
|
79
|
+
if ":" not in image_name:
|
|
80
|
+
raise ValueError(f"Image specification should contain a tag: '{image_name}:tag'.")
|
|
81
|
+
elif image_name.split(":")[1] == "latest":
|
|
82
|
+
raise ValueError("Image specification should not use the 'latest' tag.")
|
|
83
|
+
|
|
84
|
+
build_cmd = engine.image_from(CONTAINERFILE)
|
|
85
|
+
|
|
86
|
+
if build_cmd.inspect_image(image_name) != 0:
|
|
87
|
+
self.print_dockerfile_warning()
|
|
88
|
+
raise ValueError(f"Image '{image_name}' is invalid or does not exist. Check your chosen engine.")
|
|
89
|
+
|
|
90
|
+
with tempfile.NamedTemporaryFile(delete=False) as image_tar:
|
|
91
|
+
image_tar_path = Path(image_tar.name)
|
|
92
|
+
build_cmd.save_image(image_name, image_tar_path)
|
|
93
|
+
return image_name.split(":")[0], image_name.split(":")[1], image_tar_path
|
|
94
|
+
|
|
95
|
+
def check_if_doi_exists_locally(self, engine: "Engine", doi: str) -> str:
|
|
96
|
+
"""
|
|
97
|
+
Check if an image tagged with the given DOI already exists locally.
|
|
98
|
+
|
|
99
|
+
:return: The DOI if it does not exist locally, otherwise empty string.
|
|
100
|
+
"""
|
|
101
|
+
build_cmd = engine.image_from(CONTAINERFILE)
|
|
102
|
+
tag = doi.split(".")[-1]
|
|
103
|
+
|
|
104
|
+
if build_cmd.tag_exists(tag):
|
|
105
|
+
return ""
|
|
106
|
+
else:
|
|
107
|
+
return doi
|
|
108
|
+
|
|
109
|
+
def load_image(self, engine: "Engine", image_tar: Path, tag: str | None = None) -> None:
|
|
110
|
+
image_cmd = engine.image_from(CONTAINERFILE)
|
|
111
|
+
image_cmd.load_image(image_tar)
|
|
112
|
+
if tag:
|
|
113
|
+
image_name = image_tar.stem.split(".")[0]
|
|
114
|
+
image_cmd.tag_image(image_name, tag)
|
|
115
|
+
|
|
116
|
+
def tag_image(self, engine: "Engine", image: str, tag: str) -> None:
|
|
117
|
+
image_cmd = engine.image_from(CONTAINERFILE)
|
|
118
|
+
image_cmd.tag_image(image, tag)
|
|
119
|
+
|
|
120
|
+
@staticmethod
|
|
121
|
+
def print_dockerfile_warning():
|
|
122
|
+
print(
|
|
123
|
+
"\033[31m" + "\nWarning:" + "\033[0m\n"
|
|
124
|
+
"Building images from Dockerfiles is not supported for this process. "
|
|
125
|
+
"Please use pre-built images instead.\n"
|
|
126
|
+
"To build your own image, you can use Docker or Podman, ensuring that "
|
|
127
|
+
"the image is fully functional and tested before permanently "
|
|
128
|
+
"storing it on Zenodo.\n"
|
|
129
|
+
"This approach helps maintain Zenodo's quality and avoids cluttering it "
|
|
130
|
+
"with unfinished or untested images.\n"
|
|
131
|
+
"We encourage verifying and finalizing images before uploading them to Zenodo.\n"
|
|
132
|
+
)
|
|
@@ -31,17 +31,39 @@ versions:
|
|
|
31
31
|
- version: "svcomp25"
|
|
32
32
|
doi: "10.5281/zenodo.10184626"
|
|
33
33
|
benchexec_toolinfo_options: ['--graphml-witness', 'witness.graphml']
|
|
34
|
+
base_container_images:
|
|
35
|
+
- docker.io/ubuntu:24.04
|
|
34
36
|
required_ubuntu_packages: []
|
|
37
|
+
full_container_images:
|
|
38
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2025
|
|
35
39
|
- version: "svcomp24"
|
|
36
40
|
doi: "10.5281/zenodo.10184626"
|
|
37
41
|
benchexec_toolinfo_options: ['--graphml-witness', 'witness.graphml']
|
|
42
|
+
base_container_images:
|
|
43
|
+
- docker.io/ubuntu:22.04
|
|
38
44
|
required_ubuntu_packages: []
|
|
45
|
+
full_container_images:
|
|
46
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2024
|
|
39
47
|
- version: "svcomp23"
|
|
40
48
|
url: "https://gitlab.com/sosy-lab/sv-comp/archives-2023/-/raw/svcomp23/2023/2ls.zip"
|
|
41
49
|
benchexec_toolinfo_options: ['--graphml-witness', 'witness.graphml']
|
|
50
|
+
base_container_images:
|
|
51
|
+
- docker.io/ubuntu:22.04
|
|
42
52
|
required_ubuntu_packages: []
|
|
53
|
+
full_container_images:
|
|
54
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2023
|
|
43
55
|
|
|
44
56
|
competition_participations:
|
|
57
|
+
- competition: "SV-COMP 2026"
|
|
58
|
+
track: "Verification"
|
|
59
|
+
tool_version: "svcomp25"
|
|
60
|
+
jury_member:
|
|
61
|
+
name: Hors Concours
|
|
62
|
+
institution: --
|
|
63
|
+
country: --
|
|
64
|
+
url:
|
|
65
|
+
label:
|
|
66
|
+
- inactive
|
|
45
67
|
- competition: "SV-COMP 2025"
|
|
46
68
|
track: "Verification"
|
|
47
69
|
tool_version: "svcomp25"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
id: afltc
|
|
2
|
+
name: AFL-to-Test-Case
|
|
3
|
+
description: |
|
|
4
|
+
AFL-to-Test-Case is a tool that uses AFL to produce test cases.
|
|
5
|
+
input_languages:
|
|
6
|
+
- C
|
|
7
|
+
project_url: "https://gitlab.com/sosy-lab/software/test-to-witness"
|
|
8
|
+
repository_url: "https://gitlab.com/sosy-lab/software/test-to-witness"
|
|
9
|
+
spdx_license_identifier: Apache-2.0
|
|
10
|
+
benchexec_toolinfo_module: benchexec.tools.afltc
|
|
11
|
+
fmtools_format_version: "2.0"
|
|
12
|
+
fmtools_entry_maintainers:
|
|
13
|
+
- ricffb
|
|
14
|
+
- lemberger
|
|
15
|
+
|
|
16
|
+
maintainers:
|
|
17
|
+
- orcid: 0000-0003-0291-815X
|
|
18
|
+
name: Thomas Lemberger
|
|
19
|
+
institution: LMU Munich
|
|
20
|
+
country: Germany
|
|
21
|
+
url: https://thomaslemberger.com/
|
|
22
|
+
- orcid: 0000-0002-4768-4054
|
|
23
|
+
name: Henrik Wachowitz
|
|
24
|
+
institution: LMU Munich
|
|
25
|
+
country: Germany
|
|
26
|
+
url: https://www.sosy-lab.org/people/wachowitz/
|
|
27
|
+
|
|
28
|
+
versions:
|
|
29
|
+
- version: "testcomp26"
|
|
30
|
+
doi: 10.5281/zenodo.18060896
|
|
31
|
+
benchexec_toolinfo_options: []
|
|
32
|
+
required_ubuntu_packages: [gcc-13, g++-13, gdb, lcov, clang-18, clang-tools-18, libc++1-18, libc++abi1-18, libc++abi-18-dev, libclang1-18, libclang-18-dev, libclang-rt-18-dev, libclang-cpp18, liblld-18, liblldb-18, libllvm18, libomp5-18, lld-18, lldb-18, llvm-18, gcc-13-multilib, gcc-multilib]
|
|
33
|
+
base_container_images:
|
|
34
|
+
- docker.io/ubuntu:24.04
|
|
35
|
+
full_container_images:
|
|
36
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/10.5281/zenodo.18005978
|
|
37
|
+
- docker.io/aflplusplus/aflplusplus:stable
|
|
38
|
+
|
|
39
|
+
competition_participations:
|
|
40
|
+
- competition: "Test-Comp 2026"
|
|
41
|
+
track: "Test Generation"
|
|
42
|
+
tool_version: "testcomp26"
|
|
43
|
+
jury_member:
|
|
44
|
+
orcid: 0000-0002-4768-4054
|
|
45
|
+
name: Henrik Wachowitz
|
|
46
|
+
institution: LMU Munich
|
|
47
|
+
country: Germany
|
|
48
|
+
url: https://www.sosy-lab.org/people/wachowitz/
|
|
49
|
+
participants:
|
|
50
|
+
- orcid: 0000-0003-0291-815X
|
|
51
|
+
name: Thomas Lemberger
|
|
52
|
+
- orcid: 0000-0002-4768-4054
|
|
53
|
+
name: Henrik Wachowitz
|
|
54
|
+
|
|
55
|
+
techniques: ["Fuzzing"]
|
|
56
|
+
|
|
57
|
+
frameworks_solvers: ["AFL++"]
|
|
58
|
+
|
|
59
|
+
literature: []
|
|
@@ -8,7 +8,7 @@ input_languages:
|
|
|
8
8
|
project_url: https://github.com/zbchen/aise-verifier
|
|
9
9
|
repository_url: https://github.com/zbchen/aise-verifier
|
|
10
10
|
spdx_license_identifier: GPL-3.0-or-later
|
|
11
|
-
benchexec_toolinfo_module:
|
|
11
|
+
benchexec_toolinfo_module: benchexec.tools.aise
|
|
12
12
|
fmtools_format_version: "2.0"
|
|
13
13
|
fmtools_entry_maintainers:
|
|
14
14
|
- liar1007
|
|
@@ -21,6 +21,12 @@ maintainers:
|
|
|
21
21
|
url: https://zbchen.github.io/
|
|
22
22
|
|
|
23
23
|
versions:
|
|
24
|
+
- version: "svcomp26"
|
|
25
|
+
doi: "10.5281/zenodo.17876286"
|
|
26
|
+
benchexec_toolinfo_options: []
|
|
27
|
+
required_ubuntu_packages: []
|
|
28
|
+
base_container_images:
|
|
29
|
+
- docker.io/ubuntu:24.04
|
|
24
30
|
- version: "svcomp25"
|
|
25
31
|
doi: "10.5281/zenodo.14203693"
|
|
26
32
|
benchexec_toolinfo_options: []
|
|
@@ -31,6 +37,24 @@ versions:
|
|
|
31
37
|
required_ubuntu_packages: []
|
|
32
38
|
|
|
33
39
|
competition_participations:
|
|
40
|
+
- competition: "SV-COMP 2026"
|
|
41
|
+
track: "Verification"
|
|
42
|
+
tool_version: "svcomp26"
|
|
43
|
+
jury_member:
|
|
44
|
+
orcid: 0000-0002-4066-7892
|
|
45
|
+
name: Zhenbang Chen
|
|
46
|
+
institution: National University of Defense Technology
|
|
47
|
+
country: China
|
|
48
|
+
url: https://zbchen.github.io/
|
|
49
|
+
participants:
|
|
50
|
+
- orcid: 0009-0004-0979-7340
|
|
51
|
+
name: Yao Lin
|
|
52
|
+
- orcid: 0009-0005-7947-3509
|
|
53
|
+
name: Zhen Wang
|
|
54
|
+
- orcid: 0000-0002-4066-7892
|
|
55
|
+
name: Zhenbang Chen
|
|
56
|
+
- orcid: 0000-0003-0637-8744
|
|
57
|
+
name: Ji Wang
|
|
34
58
|
- competition: "SV-COMP 2025"
|
|
35
59
|
track: "Verification"
|
|
36
60
|
tool_version: "svcomp25"
|
|
@@ -58,6 +82,9 @@ frameworks_solvers:
|
|
|
58
82
|
- Z3
|
|
59
83
|
|
|
60
84
|
literature:
|
|
85
|
+
- doi: 10.1007/978-3-031-90660-2_12
|
|
86
|
+
title: "AISE v2.0: Combining Loop Transformations (Competition Contribution)"
|
|
87
|
+
year: 2025
|
|
61
88
|
- doi: 10.1007/978-3-031-57256-2_19
|
|
62
89
|
title: "AISE: A Symbolic Verifier by Synergizing Abstract Interpretation and Symbolic Execution (Competition Contribution)"
|
|
63
90
|
year: 2024
|
|
@@ -24,6 +24,13 @@ maintainers:
|
|
|
24
24
|
url: https://verify.rwth-aachen.de/jckassing/
|
|
25
25
|
|
|
26
26
|
versions:
|
|
27
|
+
- version: "svcomp26"
|
|
28
|
+
doi: "10.5281/zenodo.17491801"
|
|
29
|
+
benchexec_toolinfo_options: []
|
|
30
|
+
required_ubuntu_packages:
|
|
31
|
+
- openjdk-21-jre-headless
|
|
32
|
+
base_container_images:
|
|
33
|
+
- docker.io/ubuntu:24.04
|
|
27
34
|
- version: "svcomp25"
|
|
28
35
|
doi: "10.5281/zenodo.14192730"
|
|
29
36
|
benchexec_toolinfo_options: []
|
|
@@ -43,6 +50,18 @@ versions:
|
|
|
43
50
|
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2022
|
|
44
51
|
|
|
45
52
|
competition_participations:
|
|
53
|
+
- competition: "SV-COMP 2026"
|
|
54
|
+
track: "Verification"
|
|
55
|
+
tool_version: "svcomp26"
|
|
56
|
+
jury_member:
|
|
57
|
+
orcid: 0000-0003-3187-9217
|
|
58
|
+
name: Nils Lommen
|
|
59
|
+
institution: RWTH Aachen
|
|
60
|
+
country: Germany
|
|
61
|
+
url: https://verify.rwth-aachen.de/nlommen/
|
|
62
|
+
participants:
|
|
63
|
+
- orcid: 0000-0003-3187-9217
|
|
64
|
+
name: Nils Lommen
|
|
46
65
|
- competition: "SV-COMP 2025"
|
|
47
66
|
track: "Verification"
|
|
48
67
|
tool_version: "svcomp25"
|
|
@@ -52,6 +71,9 @@ competition_participations:
|
|
|
52
71
|
institution: RWTH Aachen
|
|
53
72
|
country: Germany
|
|
54
73
|
url: https://verify.rwth-aachen.de/nlommen/
|
|
74
|
+
participants:
|
|
75
|
+
- orcid: 0000-0003-3187-9217
|
|
76
|
+
name: Nils Lommen
|
|
55
77
|
- competition: "SV-COMP 2022"
|
|
56
78
|
track: "Verification"
|
|
57
79
|
tool_version: "svcomp22"
|
|
@@ -69,6 +91,9 @@ frameworks_solvers:
|
|
|
69
91
|
- Z3
|
|
70
92
|
|
|
71
93
|
literature:
|
|
94
|
+
- doi: 10.1007/978-3-031-90660-2_13
|
|
95
|
+
title: "AProVE (KoAT + LoAT) (Competition Contribution)"
|
|
96
|
+
year: 2025
|
|
72
97
|
- doi: 10.1007/978-3-030-99527-0_21
|
|
73
98
|
title: "AProVE: Non-Termination Witnesses for C Programs (Competition Contribution)"
|
|
74
99
|
year: 2022
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
id: brick
|
|
2
2
|
name: BRICK
|
|
3
|
+
description: |
|
|
4
|
+
BRICK is a bounded reachability checker for embedded C programs.
|
|
5
|
+
BRICK conducts a path-oriented style checking of the bounded state space of
|
|
6
|
+
the program, that enumerates and checks all the possible paths of the program
|
|
7
|
+
in the threshold one by one. BRICK locates and records unsatisfiable core path segments
|
|
8
|
+
to prune the search space to alleviate the path explosion problem.
|
|
3
9
|
input_languages:
|
|
4
10
|
- C
|
|
5
11
|
project_url: https://github.com/brick-tool-dev/BRICK-2.0
|
|
6
12
|
repository_url: https://github.com/brick-tool-dev/BRICK-2.0
|
|
7
13
|
spdx_license_identifier: MIT
|
|
8
|
-
benchexec_toolinfo_module:
|
|
14
|
+
benchexec_toolinfo_module: benchexec.tools.brick
|
|
9
15
|
fmtools_format_version: "2.0"
|
|
10
16
|
fmtools_entry_maintainers:
|
|
11
17
|
- brick-tool-dev
|
|
@@ -18,6 +24,15 @@ maintainers:
|
|
|
18
24
|
url:
|
|
19
25
|
|
|
20
26
|
versions:
|
|
27
|
+
- version: "svcomp26"
|
|
28
|
+
doi: "10.5281/zenodo.17630615"
|
|
29
|
+
benchexec_toolinfo_options: []
|
|
30
|
+
required_ubuntu_packages:
|
|
31
|
+
- clang
|
|
32
|
+
- libc6-dev-i386
|
|
33
|
+
- llvm
|
|
34
|
+
base_container_images:
|
|
35
|
+
- docker.io/ubuntu:24.04
|
|
21
36
|
- version: "svcomp25"
|
|
22
37
|
doi: "10.5281/zenodo.14203153"
|
|
23
38
|
benchexec_toolinfo_options: []
|
|
@@ -32,6 +47,15 @@ versions:
|
|
|
32
47
|
required_ubuntu_packages: []
|
|
33
48
|
|
|
34
49
|
competition_participations:
|
|
50
|
+
- competition: "SV-COMP 2026"
|
|
51
|
+
track: "Verification"
|
|
52
|
+
tool_version: "svcomp26"
|
|
53
|
+
jury_member:
|
|
54
|
+
orcid: 0000-0003-0517-7801
|
|
55
|
+
name: Lei Bu
|
|
56
|
+
institution: Nanjing University
|
|
57
|
+
country: China
|
|
58
|
+
url:
|
|
35
59
|
- competition: "SV-COMP 2025"
|
|
36
60
|
track: "Verification"
|
|
37
61
|
tool_version: "svcomp25"
|
|
@@ -22,18 +22,36 @@ versions:
|
|
|
22
22
|
- version: "svcomp25"
|
|
23
23
|
doi: "10.5281/zenodo.14205712"
|
|
24
24
|
benchexec_toolinfo_options: ["-sv-comp", "-sv-comp-witness", "witness.graphml", "-cfg", "splitting-svcomp25"]
|
|
25
|
+
base_container_images:
|
|
26
|
+
- docker.io/ubuntu:24.04
|
|
25
27
|
required_ubuntu_packages:
|
|
26
28
|
- clang-14
|
|
27
29
|
- python3
|
|
30
|
+
full_container_images:
|
|
31
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2025
|
|
28
32
|
- version: "svcomp24"
|
|
29
33
|
doi: "10.5281/zenodo.10202207"
|
|
30
34
|
benchexec_toolinfo_options: ["-sv-comp", "-sv-comp-witness", "witness.graphml", "-cfg", "splitting-svcomp24"]
|
|
35
|
+
base_container_images:
|
|
36
|
+
- docker.io/ubuntu:22.04
|
|
31
37
|
required_ubuntu_packages:
|
|
32
38
|
- clang
|
|
33
39
|
- python3
|
|
34
40
|
- python3-lxml
|
|
41
|
+
full_container_images:
|
|
42
|
+
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2024
|
|
35
43
|
|
|
36
44
|
competition_participations:
|
|
45
|
+
- competition: "SV-COMP 2026"
|
|
46
|
+
track: "Verification"
|
|
47
|
+
tool_version: "svcomp25"
|
|
48
|
+
jury_member:
|
|
49
|
+
name: Hors Concours
|
|
50
|
+
institution: --
|
|
51
|
+
country: --
|
|
52
|
+
url:
|
|
53
|
+
label:
|
|
54
|
+
- inactive
|
|
37
55
|
- competition: "SV-COMP 2025"
|
|
38
56
|
track: "Verification"
|
|
39
57
|
tool_version: "svcomp25"
|
|
@@ -40,6 +40,16 @@ versions:
|
|
|
40
40
|
- python3-lxml
|
|
41
41
|
|
|
42
42
|
competition_participations:
|
|
43
|
+
- competition: "SV-COMP 2026"
|
|
44
|
+
track: "Verification"
|
|
45
|
+
tool_version: "svcomp25"
|
|
46
|
+
jury_member:
|
|
47
|
+
name: Hors Concours
|
|
48
|
+
institution: --
|
|
49
|
+
country: --
|
|
50
|
+
url:
|
|
51
|
+
label:
|
|
52
|
+
- inactive
|
|
43
53
|
- competition: "SV-COMP 2025"
|
|
44
54
|
track: "Verification"
|
|
45
55
|
tool_version: "svcomp25"
|
|
@@ -21,6 +21,8 @@ versions:
|
|
|
21
21
|
- version: "svcomp23"
|
|
22
22
|
doi: 10.5281/zenodo.10396159
|
|
23
23
|
benchexec_toolinfo_options: ['--graphml-witness', 'witness.graphml']
|
|
24
|
+
base_container_images:
|
|
25
|
+
- docker.io/ubuntu:22.04
|
|
24
26
|
required_ubuntu_packages:
|
|
25
27
|
- gcc
|
|
26
28
|
- libc6-dev-i386
|
|
@@ -28,6 +30,16 @@ versions:
|
|
|
28
30
|
- registry.gitlab.com/sosy-lab/benchmarking/competition-scripts/user:2023
|
|
29
31
|
|
|
30
32
|
competition_participations:
|
|
33
|
+
- competition: "SV-COMP 2026"
|
|
34
|
+
track: "Verification"
|
|
35
|
+
label:
|
|
36
|
+
- inactive
|
|
37
|
+
tool_version: "svcomp23"
|
|
38
|
+
jury_member:
|
|
39
|
+
name: Hors Concours
|
|
40
|
+
institution: --
|
|
41
|
+
country: --
|
|
42
|
+
url:
|
|
31
43
|
- competition: "SV-COMP 2025"
|
|
32
44
|
track: "Verification"
|
|
33
45
|
label:
|