You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+56-58Lines changed: 56 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,46 +1,30 @@
1
-
# SPL Variability Extraction
1
+
# VEVOS: Ground Truth Extraction
2
2
3
3
<p>
4
-
This tool offers functionality for extracting the feature model, presence conditions, and other metadata for a C-preprocessor-based SPL. The setup was configured and tested
5
-
for BusyBox and Linux.
4
+
This project offers functionality for extracting feature models, presence conditions, and other metadata for a kbuild-based software product line. The setup was configured and tested for BusyBox and Linux.
6
5
</p>
7
6
8
-
9
-
## Limitations
10
-
There are some limitations to the variability extraction that should be mentioned.
11
-
### SPL Versions
12
-
Due to the plugins that are used by KernelHaven (i.e., KbuildMiner and KconfigReader), it is not possible to extract
13
-
the variability of SPL revisions without prior setup of the operating system on which the extraction is run.
14
-
More specifically, we were not able to get KernelHaven to run for linux versions of v5.0 or above. Older versions of linux (below v4), can also cause problems.
15
-
This is due to changes in the build structure that require changes to KbuildMiner and KconfigReader. Similar problems probably also exist for Busybox, Coreboot, etc.
16
-
`For this reason we offer scripts that setup a Docker container for extracting the data for BusyBox or Linux.`
17
-
18
-
### Operating System
19
-
Due to the implementation of the VariabilityExtraction and KernelHaven, it is only possible to run the variability
20
-
extraction on Linux (and possibly Mac). However, you can use the provided Docker setup, or your own virtual machine or
21
-
Windows Subsystem for Linux, in order to run the extraction on any OS.
22
-
23
7
## Quick Start using Docker
24
-
In the following, we provide instructions on how to quickly extract the variability of Linux or Busybox with the provided
8
+
In the following, we provide instructions on how to quickly extract the ground truth of Linux or Busybox with the provided
25
9
Docker setup.
26
10
27
11
### Requirements
28
12
The only requirement is Docker. We provide batch and bash scripts that execute the necessary Docker setup and execution.
29
-
We tested the Docker setup under Windows and Linux. We have not tested the setup on Mac, but you should be able to use
30
-
follow the instructions for Linux.
13
+
We tested the Docker setup under Windows and Linux.
14
+
We have not tested the setup on Mac, but you should be able to use follow the instructions for Linux.
31
15
32
16
### Preparation
33
17
#### Docker
34
18
Docker must be installed on your system, and the Docker daemon must be running.
35
19
For installation, follow the instructions given in the installation guide for your OS which you can find
36
20
[here](https://docs.docker.com/get-docker/).
37
-
Under Linux, you might additionally want to follow the optional
Extract the variability for the commit under revision tag v4.1 of Linux
85
+
Extract the ground truth for the commit under revision tag v4.1 of Linux
102
86
start-extraction.bat linux v4.1
103
87
./start-extraction.sh linux v4.1
104
88
105
-
Extract the variability for all commits between two minor revisions of Linux
89
+
Extract the ground truth for all commits between two minor revisions of Linux
106
90
start-extraction.bat linux v4.3 v4.4
107
91
./start-extraction.sh linux v4.3 v4.4
108
92
```
109
93
110
-
### Stopping the Variability Extraction
111
-
You can stop the Docker container in which the variability extraction is running at any time. In this case, all
112
-
collected data will be copied to _VariabilityExtraction/extraction-results/_ as if the extraction finished successfully.
94
+
### Stopping the Ground Truth Extraction
95
+
You can stop the Docker container in which the ground truth extraction is running at any time. In this case, all
96
+
collected data will be copied to _Extraction/extraction-results/_ as if the extraction finished successfully.
113
97
114
98
- Windows CMD:
115
99
-`stop-extraction.bat busybox`
@@ -119,30 +103,44 @@ collected data will be copied to _VariabilityExtraction/extraction-results/_ as
119
103
-`./stop-extraction.sh linux`
120
104
121
105
### Custom Configuration
122
-
You can find the properties files used by Docker under VariabilityExtraction/docker-resources. By changing the properties
123
-
for BusyBox or Linux respectively, you can adjust the variability extraction (e.g., change the log level,
106
+
You can find the properties files used by Docker under Extraction/docker-resources. By changing the properties
107
+
for BusyBox or Linux respectively, you can adjust the ground truth extraction (e.g., change the log level,
124
108
number of threads, etc.). For your convenience, we set all properties to default values. __Note that you have to rebuild the Docker image in order for the changes to take effect__.
125
109
126
-
This can also be used in case you want to extract the variability for any other SPL besides Linux and BusyBox. However,
110
+
This can also be used in case you want to extract the ground truth for any other SPL besides Linux and BusyBox. However,
127
111
please note that this requires the correct configuration of KernelHaven and possibly other preprocessing steps, that
128
112
are not included in this project. In addition, the extractors that are used internally, i.e., KbuildMiner and KconfigReader
129
113
might not be applicable to the chosen SPL. In this case, custom extractors have to be implemented and added to the dependencies
130
114
in the _pom.xml_ file.
131
115
132
116
### Clean-Up
133
-
You clean up all created images, container, and volumes via `docker system prune -a`. __DISCLAIMER: This will remove ALL docker objects, even the ones not related to variability extraction__. If you have other images, containers, or volumes that you do not want to loose, you can run the docker commands that refer to the objects related to the variability extraction.
134
-
- Image: `docker rmi variability-extraction`
117
+
You clean up all created images, container, and volumes via `docker system prune -a`. __DISCLAIMER: This will remove ALL docker objects, even the ones not related to ground truth extraction__. If you have other images, containers, or volumes that you do not want to loose, you can run the docker commands that refer to the objects related to the ground truth extraction.
If you want to run the variability extraction without Docker, you will have to first set up the environment in which
127
+
If you want to run the ground truth extraction without Docker, you will have to first set up the environment in which
144
128
the extraction is executed.
145
129
130
+
### Limitations
131
+
There are some limitations to the ground truth extraction that should be mentioned.
132
+
#### SPL Versions
133
+
Due to the plugins that are used by KernelHaven (i.e., KbuildMiner and KconfigReader), it is not possible to extract
134
+
the ground truth of SPL revisions without prior setup of the operating system on which the extraction is run.
135
+
More specifically, we were not able to get KernelHaven to run for linux versions of v5.0 or above. Older versions of linux (below v4), can also cause problems.
136
+
This is due to changes in the build structure that require changes to KbuildMiner and KconfigReader. Similar problems probably also exist for Busybox, Coreboot, etc.
137
+
`For this reason we offer scripts that setup a Docker container for extracting the data for BusyBox or Linux.`
138
+
139
+
#### Operating System
140
+
Due to the implementation of the Ground Truth Extraction and KernelHaven, it is only possible to run the ground truth
141
+
extraction on Linux (and possibly Mac). However, you can use the provided Docker setup, or your own virtual machine or
142
+
Windows Subsystem for Linux, in order to run the extraction on any OS.
143
+
146
144
### Requirements
147
145
- build-essential packages or similar (depending on OS)
148
146
- git
@@ -264,33 +262,33 @@ Clone the repository of the SPL that you want to analyze (e.g., Linux):
The easiest way to check whether (almost) everything is set up correctly and whether it is possible to extract the variability for a specific Linux commit, is to run `make allyesconfig prepare` in the linux sources directory.
300
+
The easiest way to check whether (almost) everything is set up correctly and whether it is possible to extract the ground truth for a specific Linux commit, is to run `make allyesconfig prepare` in the linux sources directory.
303
301
304
302
Navigate to the linux sources
305
303
```cd linux```
@@ -310,25 +308,25 @@ Checkout the desired commit or revision, e.g.,
310
308
Run make:
311
309
```make allyesconfig prepare```
312
310
313
-
If no errors are thrown, the VariabilityExtraction*should* be successful for this commit. If you are able to complete the preparation for at least one commit, your system should be set up correctly.
311
+
If no errors are thrown, the extraction*should* be successful for this commit. If you are able to complete the preparation for at least one commit, your system should be set up correctly.
314
312
315
313
Navigate back to working directory
316
314
```cd ..```
317
315
318
-
### Variability Extraction
319
-
You can run the variability extraction for a range of commits by specifying commit ids:
316
+
### Ground Truth Extraction
317
+
You can run the ground truth extraction for a range of commits by specifying commit ids:
0 commit comments